不能将struct类型的标识符设置为nullptr;

时间:2018-04-29 01:06:31

标签: c++ pointers struct

我有一个看起来像这样的结构:

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

我写道:

Wolf *alphawolf = new Wolf;

当我尝试将成员dog和puppy设置为nullptr时,它不能在C ++中编译

更新:

我试过了:

alphawolf.dog = nullptr;
alphawolf.puppy = nullptr;
alphawolf和。红色下划线: 错误是:

此声明没有存储类或类型说明符

现在我用过:

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

但我试图在main方法之前执行此操作,“在main()之外” 我仍然得到:这个声明没有存储类或类型说明符

1 个答案:

答案 0 :(得分:2)

不可能将可执行语句放在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;
}