2014-05-07 36 views
-3

我在程序中有一個do循環,每次發生循環時我都需要重設值(從構造函數),直到用戶退出程序。我的問題是:如何在每個時間循環發生時重置值(een,old)的函數?C++重置構造函數值

我回答了我自己的問題,提供了下面的答案和頁面末尾的解釋。

class NNew 
{ 
private: 
    int een, old; 
public: 
    NNew(int nn,int oo) 
    { 
     een = nn; 
     old = oo; 
    } 
    void newer(int n) 
    { 
     een = n; 
    } 
    void Older(int o) 
    { 
     old = o; 
    } 
    void reset() 
    { 
     een = 0; 
     old = 0; 
    } 
}; 
int main() 
{ 
    char answer1, answer2; 
    int n,o; 
    NNew *object = new NNew(10,100) 
    do 
    { 
     cout << "Would you like to continue?" << endl; 
     cin >> answer1 
     if (answer = 'yes') 
     { 
      do 
      { 
       (program asks user for inputs for n and o...) 
      } while(answer2 !='q'); 
     } 
     object->reset(); 
    } while(answer1 !='no'); 
    delete object; 
    object = 0; 
    return 0; 
} 
+1

'new'是C++中的一個關鍵字。它不能用作常規標識符。 – AnT

+0

你知道我的問題的答案嗎? tnx – ptaal

+0

只需爲'new'和'old'添加一個setter函數...因爲無論如何您都會提示用戶輸入新值。並選擇實際編譯的變量名稱。 –

回答

1

你的方式,一個新的n新對象是與循環的每次迭代創建,如果你想保持相同的對象與不斷y迭代,你可以嘗試在do ... while循環之前創建NNew對象。

僅當您在堆上創建對象時,即使用new關鍵字,您應該在完成後刪除它。

+0

可能不是真正的問題 - 請注意,除了外部的'do'循環外,還有一個內部'do'循環。 –

+0

@jonvw謝謝,我嘗試了你的兩個建議,但程序仍然沒有重置值! – ptaal

+0

@jonvw謝謝你,你的回答幫助我思考不同:) – ptaal

2

如果你想在循環的每個迭代一個新的對象,你可以使用自動變量,讓語言處理建設和破壞它,而不用擔心手動將其復位:

do 
{ 
    NNew object(10,100); 

    ... 
} while (...); 

或者,如果一定要在堆上:

do 
{ 
    NNew* object = new NNew(10,100); 

    ... 

    delete object; 
} while (...); 
+0

我知道如何做到這一點。但是,我正在試驗構造,並試圖找出如何使用函數來重置初始構造函數中的值? – ptaal

0

感謝您爲找到解決方案做出貢獻的每個人。

我的問題本身就有答案。我發現我的代碼不工作的主要原因是由於示例代碼之外的一些基本問題。

我在問題中提供的示例代碼實際上有效,您可以使用它重置構造函數值。