静态常量字符串(类成员)
我想要一个类的私有静态常量(在这种情况下是形状工厂)。 我想要些类似的东西。 class A { private: static const string RECTANGLE = "rectangle"; } 不幸的是,我从C ++(g ++)编译器中收到各种错误,例如: ISO C ++禁止初始化成员“ RECTANGLE” 非整数类型'std :: string'的静态数据成员的无效的类内初始化 错误:将“ RECTANGLE”设为静态 这告诉我,这种成员设计不符合该标准。 您如何在没有使用#define指令的情况下拥有私有文字常量(或也许是公共的)(我想避免数据全局性的丑陋!) 任何帮助表示赞赏。 #1楼 您必须在类定义之外定义静态成员,然后在其中提供初始化程序。 第一 // In a header file (if it is in a header file in your case) class A { private: static const string RECTANGLE; }; 然后 // In one of the implementation files const string A::RECTANGLE = "rectangle"; 您最初尝试使用的语法(类定义内的初始化程序)仅适用于整数和枚举类型。 从C ++ 17开始,您还有另一个选择