遇到的問題: (題意請描述清楚)
在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