c++ - struct 中的 const char 指针声明

标签 c++ struct const-char

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

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

我认为这是因为不能在结构声明中进行赋值——它们应该在函数或其他方式中进行。但我真的不允许分配 const char* 变量吗?
如果有人能告诉我我遗漏了什么,我将不胜感激。谢谢

最佳答案

您的密码是 perfectly fine在支持 C++11 或更高版本的编译器上。

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

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

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

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

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

MyStruct foo;
MyStruct bar;

在前面的示例中,foobarMyStruct 的不同实例,它们都将 str 初始化为“一些文本”

关于c++ - struct 中的 const char 指针声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14000172/

相关文章:

C++ 可变参数模板和隐式转换

c - 未格式化的 C 文件输入/输出

c - bsearch() - 在结构数组中查找字符串

c++ - GetLogicalDriveStrings() 和 char - 我哪里做错了

Qt 5 Logging - 使用 QLoggingCategory 定义类别

c++ - C++隐式复制构造函数成员变量复制顺序

c++ - 修改 LLVM Tracer 以进行故障注入(inject)

c++ - 如何进行时间分析

在 C 中将未知长度缓冲区复制到固定大小缓冲区

c++ - 在头文件中将值设置为 "const char *"是否合适