列表作为类中的成员

时间:2012-10-13 21:05:43

标签: c++

我遇到了一些麻烦!我的目标是根据素数列表检查输入数,以通过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'没有班级类型

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

1 个答案:

答案 0 :(得分:0)

最大的问题是你如何尝试使用类中列表的构造函数。如果只是从类中的列表声明中删除(1, 2),它应该编译。其次,如果要调用类中对象的构造函数,我建议使用此方法

class isprime{
  public: 
   isprime() : pnums(1,2) { /*nothing...yet?*/ }
   ...
   list <int> pnums;
   ...