初始化静态字符串数组(C++)?

Pau*_* D. 14 c++ arrays string static initialization

我不能为我的生活弄清楚如何正确地做到这一点.我有一个类需要存储一些常量(与枚举类型中的值对应的文本) - 我在我的类中声明它(公开):

const static char* enumText[];
Run Code Online (Sandbox Code Playgroud)

我试图像这样初始化它:

const char* MyClass::enumText[] = { "A", "B", "C", "D", "E" };
Run Code Online (Sandbox Code Playgroud)

但是gcc给了我以下错误:

'const char*MyClass :: enumText []'不是'class MyClass'的静态成员

我究竟做错了什么?谢谢!

Dav*_*eas 15

此代码编译:

struct X {
   static const char* enumtext[];
};

const char* X::enumtext[] = { "A", "B", "C" };
Run Code Online (Sandbox Code Playgroud)

检查您的代码并找出差异.我只能认为您没有在类中定义静态属性,您忘记包含标题或者您输入了错误的名称.

  • 第5行应该有`X :: enumtext`,否则你只是创建一个新变量. (9认同)

E.M*_*.M. 6

这与gcc版本4.0.1编译:

#include <iostream>

class MyClass {
public:
    const static char* enumText[];
};

const char* MyClass::enumText[] = { "a", "b", "c" };

int main()
{
    std::cout << MyClass::enumText[0] << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

编译:

g++ -Wall -Wextra -pedantic s.cc -o s
Run Code Online (Sandbox Code Playgroud)

你确定MyClass::enumText引用了正确的类吗?