假设我们有以下类(class):

class A {
    static SomeLongType b;
};

现在我们必须在适当的cpp文件中对其进行初始化。我可以想到以下几种方式:
SomeLongType A::b{}; // repetition of SomeLongType
decltype(A::b) A::b{}; // A::b written two times

两者似乎对我来说都很麻烦。有没有更好的办法?

最佳答案

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

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

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

struct A
{
    static SomeLongType b;
};

DEFINE( A::b );

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

关于c++ - 如何初始化静态成员而不重复其类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21339459/

10-10 07:46