2015-04-02 45 views
-1

我想做一個常規的操作符重載,但是使用模板。所以想象:如何正確地重載>運算符作爲C++中的模板函數?學習模板重載

template <typename Type> 
bool operator> (Type &tX, Type &tY) 
{ 
    return (tX.data > tY.data) ? tX : tY; 
} 

但我希望它能與任何類或原語一起工作。代碼有什麼問題?

+0

您不能爲兩個基元重載一個運算符。 – chris 2015-04-02 03:55:00

+0

這似乎很奇怪,你返回的一個對象爲'bool' ... – songyuanyao 2015-04-02 03:56:28

+0

你有沒有聽說過['std :: greater'](http://en.cppreference.com/w/cpp/utility/功能/更大的)? – 2015-04-02 04:00:22

回答

2

如何正確地重載>運算符作爲C++中的模板函數?

  1. 你不能重載>運營商爲基本類型。該語言不允許。

  2. 您不能以任何明智的方式爲用戶定義的類型重載>運算符。通用實現無法知道如何將用戶定義類型的一個實例與同一類型的另一個實例進行比較。