2014-11-04 67 views
-1

我有一个名为magicSquare的类,带有一个构造函数和一个名为display的显示函数。构造函数创建幻方,显示函数显示结果。在我的主函数中,我创建了一个名为ms的magicSquare实例并赋予它一个值7.要显示它,如果我只是执行了ms.display(),它不应该起作用吗?如何正确实现一个类的显示功能?

class magicSquare 
{ 
private: 

int size, square; 
vector<vector <int> > finalvec; 

public: 

magicSquare(int a):finalvec(a, std::vector<int>(a)) 
{ 
    int i = 0; 
    int j = a/2; 

    size = a; 
    square = a * a; 

    vector<int>vec(a); 
    vector<vector<int> > finalvec(a,vec); 

    for (int i = 0; i < size; i++) 
    { 
     for (int j = 0; j< size; j++) 
      cout << finalvec[i][j]; 
      cout << endl; 
    } 

    for (int k=0; k < square; ++k) 
    { 
     finalvec[i][j] = k; 
     i--; 
     j++; 

     if (k%a == 0) 
     { 
      i = i+ 2; 
      --j; 
     } 
     else 
     { 
      if (j==a) 
       j = j- a; 
      else if (i<0) 
       i = i+ a; 
     } 
    } 

} 

void display() 
{ 
    for (int i = 0; i < size; i++) 
    { 
      for (int j = 0; j< size; j++) 
       cout << finalvec[i][j]; 
       cout << endl; 

    } 
} 
}; 


int main() 
{ 
    magicSquare ms(3); 
    ms.display(); 
    return 0; 
} 
+2

正确缩进你的代码将帮助您找到至少一个错误。之后,请发布完整的可编译代码。 – 2014-11-04 07:57:49

+1

magicSquare函数中的'finalvec'隐藏'finalvec'成员变量。 – 2014-11-04 08:17:21

回答

-1

你的错误

正如指出由@Retired忍,载体> finalvec(一,VEC);隐藏你的成员变量finalvec,当你重新定义它作为一个新的载体......

什么可以纠正它

你可以构建一个Member initializer list内的矢量这样

magicSquare(int a) : finalvec(a, std::vector<int>(a, 0)) { 
/* your constructor */ 
} 

和Delete两个行:

vector<int>vec(a); 
vector<vector<int> > finalvec(a,vec); 

在你的代码

如何牛逼O不可犯此类错误的

了解哪些值是一个类的成员,方法参数,甚至背景变量可以是一段困难:

什么,我可以推荐你的是做到以下几点:

class member  -> m_NAME_OF_YOUR_CLASS_MEMBER 
method parameter -> t_NAME_OF_YOUR_METHODE_PARAMETER 
context variable -> c_NAME_OF_YOUR_CONTEXT_VARIABLE 

通过像你做的这样的错误做起来有点难!

编辑:测试你的代码后

我看到它有错误,有效,你第一次在该行去:

finalvec[i][j] = k; 

我>的大小,让您进一步访问你的载体允许它,这会导致段错误!请修复您的代码!

希望可以帮助

+3

只将外部矢量初始化为一个大小,而不是其中的矢量。你需要'finalvec(a,std :: vector (a))'使外部和内部向量的大小相同。 – 2014-11-04 08:47:51

+0

我加了magicSquare(int a):finalvec(a,std :: vector (a)),我的程序输出数字,但输出的数字不正确。 – user3598181 2014-11-04 09:00:37

+0

@退休忍者这是我的错误! ima将要编辑! – CollioTV 2014-11-04 09:02:11