我有一个类,我希望能够静态生成自己的随机实例。为此,我有一个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
为什么在我已经声明了类型后会发生这个错误?
答案 0 :(得分:2)
您需要指定类型:
std::mt19937 Foo::genId = std::mt19937(Foo::rdId());
std::uniform_real_distribution<> Foo::randId = std::uniform_real_distribution<>(0, 100);