我有一个看起来像这样的结构:
struct Wolf {
Wolf *dog;
Wolf *puppy;
};
我写道:
Wolf *alphawolf = new Wolf;
当我尝试将成员dog和puppy设置为nullptr时,它不能在C ++中编译
更新:
我试过了:
alphawolf.dog = nullptr;
alphawolf.puppy = nullptr;
此声明没有存储类或类型说明符
现在我用过:
alphawolf->dog = nullptr;
alphawolf->puppy = nullptr;
但我试图在main方法之前执行此操作,“在main()之外” 我仍然得到:这个声明没有存储类或类型说明符
答案 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;
}