看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 在class 中 我對 int val 作強制轉型 cast operator 題目的要求是: class intwraper { public: intwraper(int x):val(x){} private: int val; }; int main() { intwraper ivalue(3.7) , ivalue2(5); int d = ++ivalue; ...... .... system("PAUSE"); return 0; } 希望得到的正確結果: 希望 ivalue 會變成3 然後 再加一 assign 給int d 程式跑出來的錯誤結果: 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ windows 有問題的code: (請善用置底文標色功能) 這是我寫的code 但是 物件ivalue 似乎轉型之後,不接受被 overloading ++ 我卡住了 ,請幫幫我~~QQ #include <iostream> using namespace std; class intwrapaer { public: intwrapaer(int x):val(x){} operator int (); void print(); void operator ++(); void operator ++(int); private: int val; }; void intwrapaer::operator ++ () { val++; } void intwrapaer::operator ++ (int) { val++; } intwrapaer::operator int() { (int)val; return (int)val; } void intwrapaer::print() { cout<<val; } int main() { intwrapaer ivalue(3.7); intwrapaer ivalue2(5); ivalue.operator int(); cout<<ivalue<<endl; ivalue.print(); int d =ivalue++; //改成 int d =ivalue; 就可以 cout<<d<<endl; system("PAUSE"); return 0; } 補充說明: -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.231.68.43