1
我正在創建一個KeyValuePair類,並且在重載關係運算符時遇到了一些麻煩。這是我的理解是,這是必要的使用STD排序功能(我想有排序基於值)模板類中的關係運算符重載(C++)
這裏是標題:
template <typename K, typename V>
class KeyValuePair
{
public:
//factory
static KeyValuePair<K,V>* newKeyValuePair(K key, V value);
//getters
const K &Key() const;
const V &Value() const;
//setter
V &Value();
//The problem
bool operator<(const KeyValuePair<K,V> &rhs);
string toString();
~KeyValuePair(void);
private:
K key;
V value;
KeyValuePair(K key, V value);
KeyValuePair(void);
};
這裏是<函數的定義
template <typename K, typename V>
bool KeyValuePair<K,V>::operator<(const KeyValuePair<K,V> &rhs)
{
return value < rhs.Value();
}
這裏是我只是測試類的功能的主要地方。
int _tmain(int argc, _TCHAR* argv[])
{
KeyValuePair<char,int>* kvp1 = KeyValuePair<char, int>::newKeyValuePair('A',1);
KeyValuePair<char,int>* kvp2 = KeyValuePair<char,int>::newKeyValuePair('B',10);
cout << (kvp1 < kvp2) << "\n";
return 0;
}
我在我的KeyValuePair類<功能斷點,它不會被激活。
任何想法?提前致謝。
感謝您的幫助!我想將KeyValuePair作爲一個指針,用於在我將編寫的Dictionary類中進行簡單存儲。但我明白你的觀點。我也不知道std :: pair。我會研究這一點。 – Jake