1

我遇到了一些麻烦!我的目标是通过函数检查输入数字与素数列表是否为素数(在列表中)find()。我还没有走到那一步。这是作业,所以我必须重载函数运算符并以这种愚蠢(恕我直言)的方式来做。到目前为止,这是我所拥有的:

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)->isprime::pnums' 没有类类型
prime2.cpp:在成员函数'int isprime::expandList(int)'中:
prime2.cpp:23: 错误: '((isprime*)this)->isprime::pnums' 没有类类型
prime2.cpp:25: 错误: '((isprime*)this)->isprime::pnums ' 没有类类型

我不明白出了什么问题。谁能帮帮我?

4

1 回答 1

0

最大的问题是您如何尝试使用类中列表的构造函数。如果您只是(1, 2)从类中的列表声明中删除,它应该编译。其次,如果你想在你的类中调用一个对象的构造函数,我推荐这种方法

class isprime{
  public: 
   isprime() : pnums(1,2) { /*nothing...yet?*/ }
   ...
   list <int> pnums;
   ...
于 2012-10-13T21:55:47.413 回答