2011-07-23 37 views
7

問題很簡單,但我找不到解決方案。執行指針轉換操作符

class foo 
{ 
public: 
    operator int() 
    { 
     return 5; 
    } 
}; 

foo* a = new foo(); 
int b = a; 

是否有可能實現該行爲?

回答

11

你不能。轉換運算符需要是類的成員,但foo*不是用戶定義的類類型,它是一個指針類型(此外,int b = *a可以工作)。

您可以做的最好的事情就是使用一個實用工具來執行投射。

0

可以,通過顯式調用操作:

foo* a = new foo(); 
int b = a->operator int();