我有一個模板Node
用於在數組中存儲一些數據。添加之前我想檢查一個條目是否存在相同的值(我的插入邏輯需要它)。對於字符串類型,我想實現一個特定的方法進行比較。C++模板:爲特定數據類型創建專用函數
template <class T> class Node
{
private:
short noOfEntries;
T data[MAX_VALUES];
public:
Node() { noOfEntries = 0; }
int Compare(int index, T *key);
int Insert(T *key);
};
template <class T>
int Node<T>::Compare(int index, T *key)
{
if(data[index] > *key)
return 1;
else if(data[index] == *key)
return 0;
return -1;
}
template <>
class Node <string> {
public:
int Compare(int index, string *key)
{
return (data[index].compare(*key));
}
};
這使誤差作爲屬性「數據」和「noOfEntries」不在Node <string>
類。 看來,我將不得不將所有屬性從節點放到字符串的專用版本。方法也一樣。
有沒有更好的方法,以便我將只有一個爲Node定義的插入方法,它將調用正確的compare()方法,具體取決於T的實際類型?我想避免重複的方法。
不同字符特徵或分配器的字符串呢? –