2 qq 34320176 qq_34320176 于 2016.04.12 20:57 提问

c++如何定义一个类中的数据不确定的类

比如
class s
{
public:
s(int a) {b=a;}
...
private:
int b;
int w[b];
.....
};

我试着用new,但是还是不成功,那么有什么办法可以使类中的数据多少由外部确定呢?

这是我在重载[]成员访问运算符
和重载()函数调用运算符时遇到的问题。

4个回答

qq_31597573
qq_31597573   2016.04.12 22:25
已采纳
用静态数组的时候,必须同时指明数组的大小,比如int w[10],这是因为静态数组在栈上分配,在编译的时候就已经分配好内存了。楼主可以使用指针,也可以使用标准模板库中的vector.
class s

{
public:
s(int a)
{
w=new int[a];
}
//别忘了在析构函数中释放内存
~s()
{
delete[] w;
}
...
private:
int* w;
.....
};

qq_31597573
qq_31597573 回复Ch.: 只有实例化对象的时候,才会分配内存。类是抽象的,并不占用内存。
一年多之前 回复
qq_34320176
qq_34320176 回复zengweitju: 已解决。。谢谢啦
一年多之前 回复
qq_34320176
qq_34320176 回复zengweitju: 那这样的话,类中的数据没有明确指定数组元素,但实际上也是存储在该类中?
一年多之前 回复
qq423399099
qq423399099   Ds   Rxr 2016.04.12 20:59

为什么不用一个指针呢?
int *w;

qq_34320176
qq_34320176 回复小灸舞: 解决啦 谢谢回答
一年多之前 回复
qq_34320176
qq_34320176 回复小灸舞: 当时用了一个指针来着,不知道怎么的最后就删了。。。然后也没考虑
一年多之前 回复
shuideyidi
shuideyidi   2016.04.12 21:39

c++中int w[b];这个b必须是个确定的值。这里必须采用动态数组或者向量Vector才行。
内部属性采用,int *w; 构造函数中 w = new int[b];
或者采用c的方式w = (int *)malloc(b*sizeof(int));

qq_34320176
qq_34320176 回复云敛容: 解决啦 谢谢回答
一年多之前 回复
qq_34320176
qq_34320176 回复云敛容: 解决啦 谢谢回答
一年多之前 回复
u012155923
u012155923   2016.04.12 23:52

用void指针,在用的时候强制转换即可

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!