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