我正试图为一个未知大小的数组分配内存,该数组是一个类的数据成员。数据成员为:
PassengerCompartment** pass_comp;
在我想要分配数组的类(Plane)的复制构造函数中,我有这样的:
("给定"是常量平面&)
pass_comp = new PassengerCompartment*[given.NOofAlloc_PasCom];
for (int i=0; i < NOofAlloc_PasCom; i++)
{
pass_comp = new PassengerCompartment( given.(*pass_comp[i]) );
}
我得到了这个编译器错误:
error: expected unqualified-id before ‘(’ token
在这一行:
pass_comp = new PassengerCompartment( given.(*pass_comp[i]) );
(提到的"("是PassengerComponer之后的第一个)
我做错了什么?
感谢您抽出时间!
它肯定不是第一个括号,而是第二个括号,因为given.(*pass_comp[i])
不是有效的语法。也许你指的是*given.pass_comp[i]
(哪个引用了given.pass_comp[i]
)?
哦,您可能还希望在赋值运算符之前使用pass_comp[i]
而不是pass_comp
。
pass_comp
是一个指向指针的指针。如果您为其分配new,则编译器希望具有pass_comp = new Xxx*;
。
我想你想要的是pass_comp[i] = new Xxx();
,因为你已经分配了一次pass_comp
。
编辑:或者,您最终想要的是(注意pass_comp
的类型已更改)只有一个分配?
PassengerCompartment* pass_comp;
pass_comp = new PassengerCompartment[given.NOofAlloc_PasCom];
我相信你想做的是:
pass_comp = new PassengerCompartment*[given.NOofAlloc_PasCom];
for (int i=0; i < given.NOofAlloc_PasCom; i++)
{
pass_comp[i] = new PassengerCompartment(*given.pass_comp[i]);
}
您正在初始化给定的数组。NO_Alloc_PasCom指向PassengerCompany的指针,然后用given.pass_comp.的内容副本初始化每个指针
更改
pass_comp = new PassengerCompartment( given.(*pass_comp[i]) );
至
pass_comp[i] = new PassengerCompartment( *given.pass_comp[i] );