要將一個對象寫入命令行(或其他輸出流),可能會過載運算符<<
。但有沒有可能實現這個模板? 假設我有以下幾點:模板類的標準流輸出
template <typename identifier>
class SomeTemplate {
public:
SomeTemplate();
~SomeTemplate();
void addElement(identifier id, unsigned int elem);
unsigend int getElement(identifier id);
private:
std::map<identifier, unsigned int> data_map_;
};
當我現在專門的類如類型std::tuple<unsigned int, unsigned int, unsigned int>
的標識符功能getElement(identifier id)
應執行一致性檢查並在中寫入警告,以防data_map_
中所請求的元素不存在。 簡單地將id傳遞給cout不起作用,因爲對於用於專業化的類型,可能沒有超載的<<
運算符。 還有其他的可能性嗎?也許它可能標識符必須實現一個純虛擬類,它強制所有標識符超載運算符。但是這可能嗎?
感謝您的幫助。
問候
你**可以簡單地執行'cout << id',因爲在沒有適當的過載的情況下,你會得到一個編譯器錯誤。 – 2013-03-02 12:13:59