我遇到了一些麻烦!我的目标是根据素数列表检查输入数,以通过find()
函数查看它是否为素数(在列表中)。我还没有那么远。这是功课,所以我必须重载函数操作符并以这种愚蠢(imho)方式执行。以下是我到目前为止的情况:
using namespace std;
class isprime {
public: isprime() { /*nothing...yet?*/
}
bool operator()(int);
list <int> pnums(1, 2);
private: int expandList(int number);
};
bool isprime::operator()(int number) {
if (pnums.back() < number) {}
}
int isprime::expandList(int number) {
for (int j = pnums.back(); j = number; j++) {
for (int i = 2; i < sqrt(j); i++) {
if (j % i != 0) pnums.push_back(j);
}
}
}
int main() {
isprime pcheck;
int number;
while (cin >> number) {
if (pcheck(number)) cout << number << " is prime!\n";
}
}
以下是我的错误:
prime2.cpp:12:错误:数字常数之前的预期标识符
prime2.cpp:12:错误:在数字之前预期','或'...' 常数prime2.cpp:在成员函数'bool中 isprime :: operator()(int)':
prime2.cpp:19:错误: '((isprime *)this) - &gt; isprime :: pnums'没有班级类型
prime2.cpp:在成员函数'int isprime :: expandList(int)'中:
prime2.cpp:23:错误:'((isprime *)this) - &gt; isprime :: pnums'没有 类类型
prime2.cpp:25:错误: '((isprime *)this) - &gt; isprime :: pnums'没有班级类型
我不明白出了什么问题。谁能帮助我?
答案 0 :(得分:0)
最大的问题是你如何尝试使用类中列表的构造函数。如果只是从类中的列表声明中删除(1, 2)
,它应该编译。其次,如果要调用类中对象的构造函数,我建议使用此方法
class isprime{
public:
isprime() : pnums(1,2) { /*nothing...yet?*/ }
...
list <int> pnums;
...