我想这样做:
Class Obj{
private:
int a;
int b[a][3];
public:
Obj(int a);
}
这样我就可以在创建对象时指定数组的大小。但是我得到这个编译错误: 错误:数组绑定不是整数常量
我不想使用向量,有人知道我该怎么做吗?谢谢。
数组大小应该是constant
. 只有一种方法,没有动态分配 - 为此类的所有数组使用预定义的常量。
class Obj{
private:
static constexr int a = 5;
int b[a][3];
public:
Obj();
};
如果你想要不同的大小,那么你应该动态分配内存,如果你不使用向量。
您应该使用动态分配:
b = new int *[a] ;
//memory allocated for elements of each column.
for( int i = 0 ; i < a ; i++ )
b[i] = new int[3];
如果你想依赖扩展,那么 ISO C99 允许通过扩展使用可变长度数组,看看它http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html,这个扩展数组被声明为任何其他自动数组,但长度不是常量表达式。
副作用是您的代码将使用获得此扩展名的 compile 进行编译。