Node
いくつかのデータを配列に格納するためのテンプレートを以下に示します。追加する前に、同じ値を持つエントリが存在するかどうかを確認したいと思います (挿入ロジックが必要です)。文字列型の場合、特定の比較方法を実装したい。
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));
}
};
属性 'data' および 'noOfEntries' が class にないため、これによりエラーが発生しますNode <string>
。ノードのすべての属性を文字列の特殊バージョンに配置する必要があるようです。メソッドについても同じです。
T の実際の型に応じて正しい compare() メソッドを呼び出す Node に対して定義された挿入メソッドを 1 つだけ持つようにするためのより良い方法はありますか? メソッドの重複を避けたい。