gpt4 book ai didi

c++ - 为什么这会给我一个链接器错误? (使用 生成随机数)

转载 作者:行者123 更新时间:2023-11-30 01:12:55 25 4
gpt4 key购买 nike

注意:坐标是一个 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<> 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;

我正在做一些测试,但我遇到了很多问题 :(函数在“snake_utility.h”中,但由于它给我错误,我把它放在一个类中,现在我得到链接器错误:

Error 1 error LNK2001: unresolved external symbol "private: static class std::random_device Random::rd" (?rd@Random@@0Vrandom_device@std@@A) C:\Users\Reethok\Desktop\C++\Pet Projects\Snake\Snake\main.obj Snake Error 2 error LNK2001: unresolved external symbol "private: static class std::mersenne_twister_engine Random::gen" (?gen@Random@@0V?$mersenne_twister_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 Error 3 error LNK1120: 2 unresolved externals C:\Users\Reethok\Desktop\C++\Pet Projects\Snake\Debug\Snake.exe 1 1 Snake

提前致谢!

最佳答案

类的非static 成员变量是在构造类的实例时构造的。另一方面,static 成员变量对于类的所有实例都是相同的。它们需要明确定义。

您需要在封闭的命名空间中定义static 成员变量。添加

std::random_device Random::rd;
std::mt19937 Random::gen;

在 .cpp 文件中。

关于c++ - 为什么这会给我一个链接器错误? (使用 <random> 生成随机数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33206351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com