struct中的const char指针声明

时间:2012-12-22 04:55:19

标签: c++ struct const-char

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

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

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

1 个答案:

答案 0 :(得分:5)

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

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

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

在以下示例中,foobar是不同的结构,两者的成员都已初始化为"some text"

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

MyStruct foo;
MyStruct bar;

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