比如
class s
{
public:
s(int a) {b=a;}
...
private:
int b;
int w[b];
.....
};
我试着用new,但是还是不成功,那么有什么办法可以使类中的数据多少由外部确定呢?
这是我在重载[]成员访问运算符
和重载()函数调用运算符时遇到的问题。
用静态数组的时候,必须同时指明数组的大小,比如int w[10],这是因为静态数组在栈上分配,在编译的时候就已经分配好内存了。楼主可以使用指针,也可以使用标准模板库中的vector.
class s
{
public:
s(int a)
{
w=new int[a];
}
//别忘了在析构函数中释放内存
~s()
{
delete[] w;
}
...
private:
int* w;
.....
};
为什么不用一个指针呢?
int *w;
c++中int w[b];这个b必须是个确定的值。这里必须采用动态数组或者向量Vector才行。
内部属性采用,int *w; 构造函数中 w = new int[b];
或者采用c的方式w = (int *)malloc(b*sizeof(int));
用void指针,在用的时候强制转换即可