テンプレート クラスTripla (リスト構造のノード) と別のテンプレート クラスListaがあります。将来再利用できるようにジェネリックにしたいのですが、ListaクラスのTriplaオブジェクトにデータ型を設定する方法がわかりません。
template <class T>
class Tripla
{
public:
T element;
Tripla *anterior;
Tripla *siguente;
Tripla();
.................other functions/procedures
};
template <class T>
class Lista
{
private:
Tripla<T> *primer; // or would this simple be Tripla *primer??
Tripla<T> *ultimo;
public:
Lista();
~Lista();
void insertar_principio(T);
void menu();
.................other functions/procedures
};
template <class T>
void Lista<T>::insertar_principio(T el)
{
if (primer == NULL)
{
primer = new Tripla<T>; // would this be primer = new Tripla??
ultimo = primer;
primer->element=el;
}
else
{
Tripla<T> *aux = primer; // would this be Tripla *aux = primer??
primer = new Tripla;
primer->element = el;
aux->anterior = primer;
primer->siguente = aux;
}
}
一部のコンパイル エラーには、「エラー C2955: 'Tripla': クラス テンプレートの使用にはテンプレート引数リストが必要です」Tripla*
に変換できないことが含まれます。Tripla<T>*
同じデータ型を両方に設定する方法を理解するのに問題があります。たとえば、main.cpp から、次のようなものが必要です。
Lista list<int>.menu()
これにより、Tripla *primer と *ultimo が int で自動的に動作するようになります。