2013-05-30 60 views
-2
的打印值

我可以重載例如cout函數的返回值嗎? 我有,例如這個類:超載類

class Xxx 
{ 
    string val = "3"; 
} 

現在我想在cout回到"3"沒有其他方法。 我想的是:

Xxx myVar; 
cout<<myVar; 

打印"3"作爲其結果。

+2

你試過調查嗎?這裏有一個提示,這不是C:http://stackoverflow.com/questions/4421706/operator-overloading – chris

回答

1

通常的做法是overloas ostream& operator<<(ostream&, T)。在這裏,val由公衆簡單:

class Xxx 
{ 
public: 
    std::string val = "3"; 
} 

#include <ostream> 
std::ostream& operator<<(std::ostream& o, const Xxx& x) 
{ 
    return o << x.val; 
} 

然後

Xxx x; 
std::cout << x << std::endl; // prints "3" 

這種方法意味着你也可以流Xxx實例類型比std::cout其他輸出流,例如,文件。

+0

最近我一直在使用'template std :: basic_ostream &operator << (std :: basic_ostream &os,const Xxx&)'在可能的情況下。你認爲這值得打擾嗎? – BoBTFish

+1

@BoBTFish我會說這絕對是值得的,爲什麼只限於'char'。 OP目前可能處理得太多了。 – juanchopanza