首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

类动态数组,该怎么处理

2012-03-07 
类动态数组自定义类A,其中有一个私有变量mVariable,只能在构造函数中写入此变量。这个类现在是只读的,不能

类动态数组
自定义类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。
原理就是利用两个类的数据结构排列相同的原理。

热点排行