在我正在处理的项目中,我需要创建一个包含指向同一类其他对象的指针数组的类。我目前无法初始化此阵列。 例如:
class MrClass{
MrClass* otherInstances[];
public:
MrClass(MrClass* x[]){
otherInstances = x;
}
}
这个数组必须是任意大小的,因为要传递的类的实例数是在编译时定义的,并且它必须是指针的,因为类的多个实例必须能够访问相同的对象。
答案 0 :(得分:2)
使用std::vector<MrClass *>
或std::array<MrClass *>
。甚至更好,std::vector<std::shared_ptr<MrClass>>
class MrClass{
std::vector<std::shared_ptr<MrClass>> otherInstances;
public:
MrClass(std::vector<std::shared_ptr<MrClass>> const & x)
: otherInstances(x)
{
}
}
如果你真的需要一个数组(并且你真的知道,你正在做什么),请执行以下操作:
class MrClass{
MrClass ** otherInstances;
int otherInstancesCount;
public:
MrClass(MrClass ** x, int count){
otherInstances = x;
otherInstancesCount = count;
}
}
答案 1 :(得分:0)
任意大小的数组在C ++中编写std::vector
。所以
你有:
class MrClass
{
std::vector<MrClass*> otherInstances;
public:
MrClass( std::vector<MrClass*> const& initialValues )
: otherInstances( initialValues )
{
}
};