Получение «ожидаемого безусловного идентификатора перед» («токен» при попытке выделить память с помощью конструктора new и copy - PullRequest
1 голос
/ 09 февраля 2012

Я пытаюсь выделить память для массива неизвестного размера, который является датамемером класса. Дата дата:

PassengerCompartment** pass_comp;

В конструкторе копирования класса (Плоскости), который я хочу выделить для массива, у меня есть это:
(«дано» - это постоянная плоскость &)

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

(упомянутое "(" является первым после Пассажирского отделения)

Что я сделал не так?

Спасибо, что уделили время!

Ответы [ 4 ]

2 голосов
/ 09 февраля 2012

Я полагаю, что вы пытаетесь сделать следующее:

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

Там вы инициализируете массив указателей..

2 голосов
/ 09 февраля 2012

Это, безусловно, не первая скобка, а вторая, так как given.(*pass_comp[i]) не является допустимым синтаксисом.Может быть, вы имели в виду *given.pass_comp[i] (который разыменовывает given.pass_comp[i])?

О, и вы, вероятно, также хотите pass_comp[i] вместо pass_comp перед оператором присваивания.

2 голосов
/ 09 февраля 2012

pass_comp - указатель на указатель.Если вы назначите его с новым, компилятор будет иметь pass_comp = new Xxx*;.

Я предполагаю, что вы хотите pass_comp[i] = new Xxx();, поскольку вы уже присвоили pass_comp один раз.Редактировать: Или, может быть, вы, наконец, хотите (обратите внимание, что тип pass_comp изменен), чтобы иметь только одно распределение?

PassengerCompartment* pass_comp;
pass_comp = new PassengerCompartment[given.NOofAlloc_PasCom];
1 голос
/ 09 февраля 2012

Изменение

pass_comp = new PassengerCompartment( given.(*pass_comp[i]) );

до

pass_comp[i] = new PassengerCompartment( *given.pass_comp[i] );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...