2

我正在尝试这样做,但我的编译器不允许我这样做:

    struct {
        const char* string = "some text";
    } myAnonymousStruct;

我相信这是因为在结构声明中不能进行任何赋值——它们应该在函数或其他方式中进行。但是我真的不允许分配const char*变量吗?
如果有人可以让我知道我缺少什么,我将非常感激。谢谢

4

1 回答 1

6

您的代码在支持 C++11 或更高版本的编译器上非常好

在 C++11 之前,不能默认初始化结构的成员。相反,它们必须在创建实例结构后进行初始化。

如果它符合您的需要,您可以像这样使用聚合初始化:

struct {
    const char* string;
} myAnonymousStruct = { "some text" };

但是,如果您尝试默认初始化的不仅仅是结构的一个实例,那么您可能希望为您的结构提供一个构造函数并初始化其中的成员。

struct MyStruct {
    const char* str;
    MyStruct() : str("some text") { }
};

MyStruct foo;
MyStruct bar;

在前面的示例中,foobar是 的不同实例MyStruct,都str初始化为"some text"

于 2012-12-22T05:14:03.517 回答