读书人

类动态数组,该怎么处理

发布时间: 2012-03-07 09:13:51 作者: rapoo

类动态数组
自定义类A,其中有一个私有变量mVariable,只能在构造函数中写入此变量。
这个类现在是只读的,不能修改代码。
如果我要定义一个元素是A类型的动态数组,比如:
A *a = new A[5];
那么我如何使此数组的每个元素在构造时有各自的mVariable
由于数组的大小未定,因此不能用:
A a[] = {A(mVariable1), A(mVariable2),...}这样的方法
我使用memcpy可以实现,比如:
A *a = new A[5];
A b(mVariableXX);
memcpy(a + 2, &b, sizeof(A));
有没有其它方法呢?
谢谢

[解决办法]
你是想用动态数组来完成非缺省构造函数的操作吗?
在这种: A* p=new A[5]情况下,调用的必然是缺省构造函数,想完成你的想法,调用不同的构造函数那是不可能的
[解决办法]
#include <new>

用预定义的new分配内存,
这个好象可以满足你的需求,
不过delete要自己手动编写
[解决办法]
定义一个名字不同,但是结构相同的类B。但是类B增加一个可以读写mVariable的方法。
class B{
public:
Set(int a);
{.......}


private:
int mVariable;
};
创建一个B类的指针,然后把指针指向a,最后用Set方法改变mVariable。
原理就是利用两个类的数据结构排列相同的原理。

读书人网 >C++

热点推荐