не может установить идентификатор типа struct в nullptr; - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть структура, которая выглядит так:

struct Wolf {
    Wolf *dog;
    Wolf *puppy;
};

Я написал:

Wolf *alphawolf = new Wolf;

когда я пытаюсь установить для собак-членов и щенков значение nullptr, он не компилируется в C ++

UPDATE:

Я пытался:

alphawolf.dog = nullptr;
alphawolf.puppy = nullptr;

Альфа-волк и. подчеркнуто красным: Ошибка:

это объявление не имеет класса хранения или спецификатора типа

Теперь я использовал:

alphawolf->dog = nullptr;
alphawolf->puppy = nullptr;

Но я пытаюсь сделать это перед основным методом, "за пределами main ()" Я все еще получаю: это объявление не имеет класса хранения или спецификатора типа

1 Ответ

0 голосов
/ 29 апреля 2018

Невозможно поместить исполняемые операторы вне main() (или любой другой функции).

Если вы хотите объявить глобальную переменную alphawolf с начальными значениями nullptr, синтаксис (вне main()):

Wolf alphawolf {nullptr, nullptr};

Также можно выделить глобальный Wolf* с new. Чтобы инициализировать его, синтаксис:

Wolf *alphawolf = new Wolf {nullptr, nullptr};

Чтобы назначить nullptr членам alphawolf, операторы должны быть внутри main() или какой-либо другой функции.

Wolf *alphawolf = new Wolf;
int main() {
    alphawolf->dog = nullptr;
    alphawolf->puppy = nullptr;

    /* Do other stuff with alphawolf */

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...