看板 C_and_CPP 關於我們 聯絡資訊
以下是部份程式碼... ------------------------------------------------- class Counter { public: Counter(); Counter(int max); int getDollar(); private: int dollar; int maximum; }; int main() { int max=0; cout<<"========測試用計算=========\n"; cout<<"請輸入最大計算值(預設請輸入0): "; cin>>max; system ("cls"); if (max<=0) { Counter obj; system ("cls");} else { Counter obj(max); system ("cls");} ... ... if (obj.getDollar()) { /*balabalabala...*/ } } --------------------------------------------- compiler後, error問題都會在if (obj.getDollar())這行 說明是說"obj沒有宣告" 然後我看了一下, 問題似乎都在這個if判斷式 if (max<=0) { Counter obj; system ("cls");} else { Counter obj(max); system ("cls");} 我將這整段if else都拿掉, 改成Counter obj; 之後 compiler就會過了... 想請問一下這邊是本來就不能這樣用嗎!? 還是我忘記定義什麼...@@ 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.165.108.59
james732:是 scope 的問題 請把 Counter obj 提到 if 外面 03/29 21:22
KATORU:那如果我想要利用輸入來選擇執行的建構子應該要怎麼寫..!? 03/29 21:24
KATORU:EX:輸入100就執行obj(100); 輸入0或沒有輸入就執行obj(); 03/29 21:24
james732:唔 我只想得到用 new 而已... 03/29 21:26
kvykn:james732正解. obj在離開if宣告的scope就會銷毀了 03/29 21:37
kvykn:之後的程式碼你想用obj當然不給用. 03/29 21:38
KATORU:orz 那無解了嗎... 03/29 21:48
POSIX:先宣告一個 Counter* obj, if else 內用new assign 03/29 22:08
POSIX:"宣告" 不要在run time 去判斷要不要做, 非得這麼做 只好用 03/29 22:10
POSIX:dynamic allocation 的方式 03/29 22:10
KATORU:3Q以上解答~ 小的清楚多~ 03/29 22:49
POSIX:如果是推文中的需求 你可以考慮constructor overloading 03/29 23:48
POSIX:和default arguments assign 應該可以達到你想要的目的 03/29 23:48
kvykn:就是new阿 = = james不是說了 03/30 23:29