C++随机问题

Jaa*_*nus 2 c++ random

测试

RandomNumberGenerator rng;
cout << rng() << endl;
Run Code Online (Sandbox Code Playgroud)

class RandomNumberGenerator {
public:
    unsigned long operator()(); 
};
Run Code Online (Sandbox Code Playgroud)

CPP

unsigned long operator()() {   // HERE IS ERROR
srand(time(NULL));
unsigned long r = rand();
return r;
}
Run Code Online (Sandbox Code Playgroud)

基本上我试图做一个随机数发生器.但得到一个错误:

C:\ CodeBlocks\kool\praks3\src\myfunctors.cpp | 5 | error:'long unsigned int operator()()'必须是非静态成员函数

In *_*ico 6

您需要使用以下命令告诉编译器operator()()属于RandomNumberGenerator该类:::

unsigned long RandomNumberGenerator::operator()()
{
    srand(time(NULL));
    unsigned long r = rand();
    return r;
}
Run Code Online (Sandbox Code Playgroud)

编译器说它"必须是非静态成员函数",因为它必须是operator()()类的成员而不是全局函数.如果没有作用域操作符,编译器会认为它operator()()是一个全局函数,因此不是RandomNumberGenerator错误源的成员.

不要忘记将RandomNumberGenerator类的标题包含在源文件中!