[問題] c++的constructor使用問題

看板C_and_CPP (C/C++)作者 (歡迎加入NHK!!!)時間16年前 (2009/03/29 21:21), 編輯推噓4(4010)
留言14則, 4人參與, 最新討論串1/2 (看更多)
以下是部份程式碼... ------------------------------------------------- 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

03/29 21:22, , 1F
是 scope 的問題 請把 Counter obj 提到 if 外面
03/29 21:22, 1F

03/29 21:24, , 2F
那如果我想要利用輸入來選擇執行的建構子應該要怎麼寫..!?
03/29 21:24, 2F

03/29 21:24, , 3F
EX:輸入100就執行obj(100); 輸入0或沒有輸入就執行obj();
03/29 21:24, 3F

03/29 21:26, , 4F
唔 我只想得到用 new 而已...
03/29 21:26, 4F

03/29 21:37, , 5F
james732正解. obj在離開if宣告的scope就會銷毀了
03/29 21:37, 5F

03/29 21:38, , 6F
之後的程式碼你想用obj當然不給用.
03/29 21:38, 6F

03/29 21:48, , 7F
orz 那無解了嗎...
03/29 21:48, 7F

03/29 22:08, , 8F
先宣告一個 Counter* obj, if else 內用new assign
03/29 22:08, 8F

03/29 22:10, , 9F
"宣告" 不要在run time 去判斷要不要做, 非得這麼做 只好用
03/29 22:10, 9F

03/29 22:10, , 10F
dynamic allocation 的方式
03/29 22:10, 10F

03/29 22:49, , 11F
3Q以上解答~ 小的清楚多~
03/29 22:49, 11F

03/29 23:48, , 12F
如果是推文中的需求 你可以考慮constructor overloading
03/29 23:48, 12F

03/29 23:48, , 13F
和default arguments assign 應該可以達到你想要的目的
03/29 23:48, 13F

03/30 23:29, , 14F
就是new阿 = = james不是說了
03/30 23:29, 14F
文章代碼(AID): #19ptM_9i (C_and_CPP)
文章代碼(AID): #19ptM_9i (C_and_CPP)