struct中的const char指针声明

Cod*_*ith 2 c++ struct const-char

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

    struct {
        const char* string = "some text";
    } myAnonymousStruct;
Run Code Online (Sandbox Code Playgroud)

我相信这是因为在结构声明中不能进行任何分配 - 它们应该是在函数或其他方面进行的.但我真的甚至不允许分配const char*变量吗?
如果有人能让我知道我错过了什么,我真的很感激.谢谢

Sea*_*ine 6

结构的成员不能默认初始化,必须在创建实例结构后初始化它们.因为在您的示例中,foo是一个未命名结构的实例,所以执行以下操作是有意义的:

struct {
    const char* string;
} myAnonymousStruct = { "some text" };
Run Code Online (Sandbox Code Playgroud)

大多数寻找此行为的人都试图默认初始化结构的许多实例的值.如果这最终是您期望的用法,您可能需要考虑为您的struct提供构造函数并在其中初始化成员.

在以下示例中,bar并且MyStruct是不同的结构,两者都具有初始化为的成员str.

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

MyStruct foo;
MyStruct bar;
Run Code Online (Sandbox Code Playgroud)

虽然,在这种情况下,我通常最终会使用一个类.

  • 我忘记了聚合初始化的选项.好好思考.但是,类与结构点有点无关.如果愿意,可以将构造函数放在`struct`中. (3认同)