我正在尝试这样做,但我的编译器不会让我:
struct {
const char* string = "some text";
} myAnonymousStruct;
我相信这是因为在结构声明中不能进行任何分配 - 它们应该是在函数或其他方面进行的。但我真的甚至不允许分配const char*
变量吗?如果有人能让我知道我缺少什么,我真的很感激。 THX
答案 0 :(得分:5)
结构的成员不能默认初始化,必须在创建实例结构后初始化它们。因为在您的示例中,myAnonymousStruct
是未命名结构的实例,所以执行以下操作是有意义的:
struct {
const char* string;
} myAnonymousStruct = { "some text" };
大多数寻找此行为的人都在尝试默认初始化结构的许多实例的值。如果这最终是您期望的用法,您可能需要考虑为您的struct提供构造函数并在其中初始化成员。
在以下示例中,foo
和bar
是不同的结构,两者的成员都已初始化为"some text"
。
struct MyStruct {
const char* str;
MyStruct() { str = "some text"; }
};
MyStruct foo;
MyStruct bar;
虽然在这种情况下,我通常最终会使用一个类。