我想知道是否可以声明一个数组(此时大小不知道),作为一个类的私有成员,然后在该类的构造函数中设置大小.例如:
class Test { int a[]; public: Test(int size); }; Test::Test(int size) { a[size]; // this is wrong,but what can i do here? }
这是可能的还是应该使用动态数组?谢谢!
解决方法
不,这是不可能的.标头中的数组声明必须具有恒定大小的值.否则,像“sizeof”这样的构造就不可能正常运行.您需要将数组声明为指针类型,并在构造函数中使用new [].例.
class Test { int *a; public: Test(int size) { a = new int[size]; } ~Test() { delete [] a; } private: Test(const Test& other); Test& operator=(const Test& other); };