PDA

View Full Version : [C++] Problemi con template e funzioni


alessandrom
02-02-2012, 20:57
Ciao a tutti,

sto facendo alcune prove con C++ e sono arrivato alle classi template.

Ho fatto una classe templata di questo tipo:

template<typename T>
class Classe{

struct Dato{
int K;
T data;
Dato* next;
}

public:
Dato *data;
}


e fin qui nessun problema. i problemi nascono quando ho la necessità di fare la conversione di una classe già esistente.

Cioè vorrei poter fare:


Classe<int> a();
Classe<double> b(a);


ma il compilatore mi dice che non esistono funzioni in grado di convertire Classe<int>::Dato in Classe<double>:: Dato.

Ho provato a creare una funzione che scorre la lista Dato originale e la copia, ma funziona solo quando il tipo è lo stesso (mettendo come membro della funzione Dato* d), ma se provo a forzare il tipo dato diverso scrivendo

template<typename T1>
void foo(Classe<T1>::Dato* d){
//Leggi la struct originale e copia chiave e valore convertito.
}

mi dice che d non è stata definita in questo scope.

Quale sarebbe la procedura corretta?

alessandrom
02-02-2012, 22:59
Credo di avere risolto da solo:

la struct va definita fuori, altrimenti il compilatore pensa che siano dati completamente diversi e non differenti per un solo dato facilmente convertibile.

Così funziona:

template <typename F>
struct Dato{
int K;
F data;
Dato<F>* next;
};

template<typename T>
class Classe{

public:
Dato<T> *data;
};