相关疑难解决方法(0)

静态常量字符串(类成员)

我想为一个类(在这种情况下是一个形状工厂)有一个私有静态常量.

我想要有类似的东西.

class A {
   private:
      static const string RECTANGLE = "rectangle";
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我从C++(g ++)编译器中得到了各种错误,例如:

ISO C++禁止成员'RECTANGLE'的初始化

非整数类型'std :: string'的静态数据成员的无效类初始化

错误:使'RECTANGLE'静止

这告诉我这种成员设计不符合标准.如何在不使用#define指令的情况下拥有私有文字常量(或者可能是公共的)(我想避免数据全局性的丑陋!)

任何帮助表示赞赏.

c++ string static const class

429
推荐指数
8
解决办法
35万
查看次数

为什么使用未命名的命名空间以及它们有什么好处?

我刚刚加入了一个新的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)

可能导致使用未命名的命名空间的设计注意事项是什么?有哪些优点和缺点?

c++ oop namespaces

220
推荐指数
6
解决办法
11万
查看次数

static const C++类成员初始化在链接时给出重复的符号错误

我有一个具有静态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数组?我的意思是,这就是静态成员的想法.

c++ static

2
推荐指数
1
解决办法
3182
查看次数

标签 统计

c++ ×3

static ×2

class ×1

const ×1

namespaces ×1

oop ×1

string ×1