注意: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<> 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;
};
Run Code Online (Sandbox Code Playgroud)
然后在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;
Run Code Online (Sandbox Code Playgroud)
我正在做一些测试,但是我遇到了很多问题:(,tbh我有一段时间没有编程了。无论如何,我想创建一个辅助函数,该函数将在指定范围内返回随机坐标,该函数位于“ snake_utility.h”,但是由于它给了我错误,所以将其放在一个类中,现在出现链接器错误:
错误1错误LNK2001:无法解析的外部符号“私有:静态类std :: random_device Random :: rd”(?rd @ Random @@ 0Vrandom_device @ std @@ A)C:\ Users \ Reethok \ Desktop \ C ++ \ Pet Projects \ Snake \ Snake \ main.obj Snake错误2错误LNK2001:未解析的外部符号“私有:静态类std :: mersenne_twister_engine Random :: gen”(?gen @ Random @@ 0V?$ mersenne_twister_engine @ I $ 0CA @ $ 0CHA @ $ 0 BIN @ $ 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
提前致谢!
static当构造类的实例时,将构造类的非成员变量。static另一方面,该成员变量对于该类的所有实例都是相同的。它们需要明确定义。
您需要static在封闭的名称空间中定义成员变量。加
std::random_device Random::rd;
std::mt19937 Random::gen;
Run Code Online (Sandbox Code Playgroud)
在.cpp文件中。