C++ 为什么这会给我一个链接器错误?(使用生成随机数)
注意:coord是一个std::pairC++ 为什么这会给我一个链接器错误?(使用生成随机数),c++,random,linker,C++,Random,Linker,注意:coord是一个std::pair class Random { public: Random() { gen.seed(rd()); }; coord rnd_coord(int x, int y) { std::uniform_int_distribution<> dist_x(0, x - 1); std::uniform_int_distribution<> dis
class Random
{
public:
Random()
{
gen.seed(rd());
};
coord rnd_coord(int x, int y)
{
std::uniform_int_distribution<> dist_x(0, x - 1);
std::uniform_int_distribution<> dist_y(0, y - 1);
coord temp;
temp.first = dist_x(gen);
temp.second = dist_y(gen);
return temp;
}
private:
static std::random_device rd;
static std::mt19937 gen;
};
然后在main.cpp中
int x;
Random R;
coord C;
C = R.rnd_coord(10, 10);
std::cout << C.first << ", " << C.second << std::endl;
std::cin >> x;
return 0;
我正在用做一些测试,但是我有很多问题:,tbh,我有一段时间没有编程了。无论如何,我想创建一个helper函数,该函数将返回指定范围内的随机坐标,该函数位于snake_utility.h中,但由于它给了我错误,我将其放入一个类中,现在我得到链接器错误:
错误1错误LNK2001:未解析的外部符号专用:静态
类std::random\u设备random::rd
?rd@Random@@0Vrandom_device@std@@A C:\Users\Reethok\Desktop\C++\Pet
Projects\Snake\Snake\main.obj Snake错误2错误LNK2001:未解决
外部符号私有:静态类
标准::mersenne_捻线机_发动机
随机::gen
?gen@Random@@0V?$mersenne\u捻线机_engine@I$0CA@$0CHA@$0BIN@$0BP@$0JJAILANP@$0L@$0PPPPPPPP@$06$0JNCMFGIA@$0P@$0OPMGAAAA@$0BC@$0GMAHIJGF@@std@@A C:\Users\Reethok\Desktop\C++\Pet
Projects\Snake\Snake\main.obj Snake错误3错误LNK1120:2
未解析的外部C:\Users\Reethok\Desktop\C++\Pet
Projects\Snake\Debug\Snake.exe 1 1 Snake
提前谢谢 类的非静态成员变量是在构造类的实例时构造的。另一方面,静态成员变量对于类的所有实例都是相同的。它们需要明确定义
您需要在封闭的命名空间中定义静态成员变量。加
std::random_device Random::rd;
std::mt19937 Random::gen;
在.cpp文件中。在构造类的实例时,会构造类的非静态成员变量。另一方面,静态成员变量对于类的所有实例都是相同的。它们需要明确定义
您需要在封闭的命名空间中定义静态成员变量。加
std::random_device Random::rd;
std::mt19937 Random::gen;
在.cpp文件中