2012-10-13 121 views
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: error: expected identifier before numeric constant
prime2.cpp:12: error: expected ',' or '...' before numeric constant
prime2.cpp: In member function 'bool isprime::operator()(int)':
prime2.cpp:19: error: '((isprime*)this)->isprime::pnums' does not have class type
prime2.cpp: In member function 'int isprime::expandList(int)':
prime2.cpp:23: error: '((isprime*)this)->isprime::pnums' does not have class type
prime2.cpp:25: error: '((isprime*)this)->isprime::pnums' does not have class type

我不明白什麼錯誤。任何人都可以幫我嗎?

+0

修改類定義如何工作,特別是如何聲明類成員。 –

+0

1次錯誤,並嘗試自己搞清楚。它比我們進來並提供更正版本更有用。 –

+0

谷歌提示:構造函數初始化程序列表 –

回答

0

最大的問題是你如何嘗試在你的類中使用構造函數。如果你只是從你的類的列表聲明中刪除(1, 2),它應該編譯。其次,如果你想調用你的類中的對象的構造函數,我推薦這種方法

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

Niiii​​ice!當你發佈它的時候,我已經想通了,但是謝謝你,因爲我的講師提供了一個makefile來編譯我們的代碼,而且我一直都在收到所有這些瘋狂的錯誤,但是這是由於我的編譯器對我的代碼感到滿意並且對目錄中的不同代碼不太滿意。長話短說這個迴應讓我有信心知道我的方法是正確的 – dockleryxk