1

テンプレート クラス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 で自動的に動作するようになります。

4

1 に答える 1