在尝试使用 new 和 copy 构造函数分配内存时,在 '(' 令牌之前获取"预期的非限定 id"



我正试图为一个未知大小的数组分配内存,该数组是一个类的数据成员。数据成员为:

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] );

最新更新