2014-11-04 68 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