我正在尝试这样做,但我的编译器不允许我这样做:
struct {
const char* string = "some text";
} myAnonymousStruct;
我相信这是因为在结构声明中不能进行任何赋值——它们应该在函数或其他方式中进行。但是我真的不允许分配const char*
变量吗?
如果有人可以让我知道我缺少什么,我将非常感激。谢谢
我正在尝试这样做,但我的编译器不允许我这样做:
struct {
const char* string = "some text";
} myAnonymousStruct;
我相信这是因为在结构声明中不能进行任何赋值——它们应该在函数或其他方式中进行。但是我真的不允许分配const char*
变量吗?
如果有人可以让我知道我缺少什么,我将非常感激。谢谢
您的代码在支持 C++11 或更高版本的编译器上非常好。
在 C++11 之前,不能默认初始化结构的成员。相反,它们必须在创建实例结构后进行初始化。
如果它符合您的需要,您可以像这样使用聚合初始化:
struct {
const char* string;
} myAnonymousStruct = { "some text" };
但是,如果您尝试默认初始化的不仅仅是结构的一个实例,那么您可能希望为您的结构提供一个构造函数并初始化其中的成员。
struct MyStruct {
const char* str;
MyStruct() : str("some text") { }
};
MyStruct foo;
MyStruct bar;
在前面的示例中,foo
和bar
是 的不同实例MyStruct
,都str
初始化为"some text"
。