使用class属性作为数组绑定

时间:2013-04-04 09:47:56

标签: c++ class

我想这样做:

Class Obj{
private:
int a;
int b[a][3];

public:
Obj(int a);
}

这样我就可以在创建对象时指定数组的大小。但是我得到了这个编译错误:错误:数组绑定不是整数常量

我不想使用矢量,dos有谁知道我怎么能这样做? 感谢。

3 个答案:

答案 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,这个扩展数组被声明为任何其他自动数组,但其长度不是一个恒定的表达。

副作用是您的代码将使用编译进行编译,并获得此扩展。