嘿所以我想在我的一个类中声明一个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 :(得分:3)
int constructor(int n)
{
int** triangle = new int*[n + 1];
for(int i = 0; i <= n; ++i)
triangle[i] = new int[i + 1];
}
答案 1 :(得分:0)
替代解决方案
使用 std :: vector 而不是原始指针声明 2D 数组
n x n矩阵:
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 :: vector的2d数组都被初始化为0。