我有一个模板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的实际类型?我想避免重复的方法。
不同字符特征或分配器的字符串呢? –