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