VC的静态常量成员
(金庆的专栏)
在类中声明一个静态常量成员:
// A.h
class A
{
public:
static const unsigned int SIZE = 10;
};
在A.cpp中定义:
unsigned int A::SIZE;
VC2008报多重定义错误。
删除A.cpp中的定义就可以通过。但是gcc编译报错。
感觉是VC中的静态常量成员声明后会自动产生实例。
看到protobuf生成的代码中,.pb.cc文件中,静态常量成员的定义会用_MSC_VER括起来:
#ifndef _MSC_VER
const int PlayerData::kPlayerIdFieldNumber;
#endif // !_MSC_VER
另一个方案是用enum代替,但仅限int类型:
public:
enum { SIZE = 10 };