如何初始化静态成员而不重复其类型

时间:2014-01-24 18:08:28

标签: c++ c++11

假设我们有以下课程:

class A {
    static SomeLongType b;
};

现在我们必须在适当的cpp文件中初始化它。我可以想到以下几种方式:

SomeLongType A::b{}; // repetition of SomeLongType
decltype(A::b) A::b{}; // A::b written two times

对我来说,两者似乎都很麻烦。还有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

完美的解决方案是使用C ++ 11 auto。但是,正如ecatmur评论的那样,语言不允许这样做。

为什么不定义一个简单的宏?

#define DEFINE(x) decltype(x) x{}

struct A
{
    static SomeLongType b;
};

DEFINE( A::b );

我真的很讨厌C宏,但在某些情况下它们很有用。