【发布时间】:2017-07-17 10:47:23
【问题描述】:
我有一个类,我希望能够静态生成自身的随机实例。为此,我有一个 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
我已经声明了类型,为什么会出现这个错误?
【问题讨论】:
-
你也需要在实现文件中指定类型
-
@DanielJour 想知道为什么会这样?
标签: c++