C ++ - 初始化静态私有类成员时键入不匹配错误

时间:2017-02-26 22:59:54

标签: c++

我有一个类,我希望能够静态生成自己的随机实例。为此,我有一个std::uniform_real_distribution的静态实例。但是,我在编译器中遇到类型不匹配错误。

编译器错误为:'genId' in 'class Foo' does not name a type'randId' in 'class Foo' does not name a type。但是,我在头文件中指定了类型,如下所示。

头文件(Foo.hpp):

class Foo {
public:
    static std::random_device rdId;
    static std::mt19937 genId;
    static std::uniform_real_distribution<> randId;
    // other code
}

实施文件(Foo.cpp):

#include "Foo.hpp"

Foo::genId = std::mt19937(Foo::rdId());
Foo::randId = std::uniform_real_distribution<>(0, 100);
// other code

为什么在我已经声明了类型后会发生这个错误?

1 个答案:

答案 0 :(得分:2)

您需要指定类型:

std::mt19937 Foo::genId = std::mt19937(Foo::rdId());
std::uniform_real_distribution<> Foo::randId = std::uniform_real_distribution<>(0, 100);