1

困っています!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)-> 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 に答える