我想为一个类(在这种情况下是一个形状工厂)有一个私有静态常量.
我想要有类似的东西.
class A {
private:
static const string RECTANGLE = "rectangle";
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我从C++(g ++)编译器中得到了各种错误,例如:
ISO C++禁止成员'RECTANGLE'的初始化
非整数类型'std :: string'的静态数据成员的无效类初始化
错误:使'RECTANGLE'静止
这告诉我这种成员设计不符合标准.如何在不使用#define指令的情况下拥有私有文字常量(或者可能是公共的)(我想避免数据全局性的丑陋!)
任何帮助表示赞赏.
我刚刚加入了一个新的C++软件项目,我正在尝试理解这个设计.该项目经常使用未命名的命名空间.例如,类定义文件中可能会出现这样的情况:
// newusertype.cc
namespace {
const int SIZE_OF_ARRAY_X;
const int SIZE_OF_ARRAY_Y;
bool getState(userType*,otherUserType*);
}
newusertype::newusertype(...) {...
Run Code Online (Sandbox Code Playgroud)
可能导致使用未命名的命名空间的设计注意事项是什么?有哪些优点和缺点?
我有一个具有静态const数组的类,它必须在类外部初始化:
class foo{
static const int array[3];
};
const int foo::array[3] = { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)
但后来我在foo.o和main.o foo.o中得到一个重复的符号foo :: array,并保存foo类,main.o保存main()并使用foo的实例.
如何在foo的所有实例之间共享此静态const数组?我的意思是,这就是静态成员的想法.