VC的静态常量成员

VC的静态常量成员
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 };

你可能感兴趣的:(VC的静态常量成员)