Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这会给我一个链接器错误?(使用生成随机数)_C++_Random_Linker - Fatal编程技术网

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

C++ 为什么这会给我一个链接器错误?(使用生成随机数),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

注意: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;
};
然后在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文件中