测试
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()()'必须是非静态成员函数
您需要使用以下命令告诉编译器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类的标题包含在源文件中!