金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
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 };
posted on 2012-02-13 11:05 金庆 阅读(475) 评论(0)  编辑 收藏 引用 所属分类: 1. C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理