2014-03-26 192 views
0

嘿所以我想在類之一聲明一個2D陣列 - 這是首先聲明的任何方法之外,並且通過構造聲明在C++ 2D陣列

class xxx 
int **triangle; 


constructor(int n){ 
    triangle = new int *[n+1]; 
    for(int i=0;i<=n; i++) triangle[i]=new int[i+1]; 
} 

但第一行然後設置大小構造函數不起作用:

error: incompatible types in assignment of ‘int**’ to ‘int* [0]’ 

NVM它是固定的 - 我把int * triangle [];在我的頭文件..40分鐘浪費:d

+0

重複初始化:http://stackoverflow.com/questions/10007117/how-創建一個大的2維陣列與C/10007161 – jacekmigacz

+0

這不是我想要的 - 我想用新的。此外,它也無法正常工作:錯誤:將'void *'賦值給'int * [0]'的不兼容類型 – user3369008

+0

您的代碼正在爲我工​​作: http://coliru.stacked-crooked.com/a/ 8b52e994c4047dfd – Arpegius

回答

3
int constructor(int n) 
{ 
    int** triangle = new int*[n + 1]; 
    for(int i = 0; i <= n; ++i) 
     triangle[i] = new int[i + 1]; 
} 
0

替代的解決方案

聲明2D使用的std ::矢量代替原始指針陣列

NxN矩陣:

std::vector<std::vector<int> > triangle(n, std::vector<int>(n, 0)); 

x行COL矩陣

std::vector<std::vector<int> > triangle(row, std::vector<int>(col, 0)); 

注意:無論使用std ::矢量的2D陣列由0