[問題] c++ class 可否多載 class name?

作者: OfficeGL (努力上班族)   2019-07-24 17:15:31
開發平台(Platform): (Ex: Win10, Linux, ...)
linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
clang++ -std=c++11
問題(Question):
我目前能多載 operator[] / > / < / + / ...
但我想要多載 class 變數名稱
ex.
class Ball {
public:
.......
bool 多載func () {
return (a > b);
}
private:
... ...
int a, b;
}
int main(){
Ball a;
// 我想要多載 a,直接 return boolean value
if( a ) {
}
....
}
目前不知道如何實作
有大大可以分享教學嗎~~
謝謝~
作者: sarafciel (Cattuz)   2019-07-25 13:51:00
你要的那個operator+不見得什麼場合都會是整數的+呀XD最簡單的例子就是std::string
作者: eye5002003 (下一夜)   2019-07-25 00:57:00
bibo說的就是你想要的
作者: LPH66 (-6.2598534e+18f)   2019-07-24 19:54:00
if(a) 這種式子會把 a 轉型成 bool 再做判斷所以你只要重載當它轉型成 bool 時的行為即可要轉成的值即是所有你要使 if(a) 成立的狀況
作者: s4300026 (s4300026)   2019-07-24 18:18:00
作者: Lipraxde (Lipraxde)   2019-07-24 18:16:00
conversion operator
作者: s4300026 (s4300026)   2019-07-24 18:16:00
就是if(cin),對吧 XD
作者: jerryh001   2019-07-24 17:31:00
重載轉型成bool的operator?慢了XD
作者: bibo9901 (function(){})()   2019-07-24 17:30:00
就 operator bool() 啊XD
作者: ko27tye (好滋好滋)   2019-07-24 17:24:00
比較符合你需求的做法是overload operator() 但使用起來會像這樣--> if(a()){...}
作者: LPH66 (-6.2598534e+18f)   2019-07-25 17:35:00
簡單講就是當你的 operator + - * / 等等的運算結果會需要是某個非內建型態的東西的時候你不管用什麼中間型態過渡都是沒辦法的數的運算的例子例如表示有理數的 class跟數無關的例如上面提的字串相連
作者: CoNsTaR ((const *))   2019-07-28 12:42:00
看 operator + 還是 operator int 的成本大吧

Links booklink

Contact Us: admin [ a t ] ucptt.com