6
Sto tentando di accedere a un membro typedef nella classe base dal modello di classe derivata. Nel nome template del parametro template è uguale al nome di typdef nella classe base.Accesso alla classe base typedef nel modello di classe derivata
#include <iostream>
using namespace std;
class no {
public :
typedef int T;
};
template<typename T> class no1 : public no {
public :
T obj;
};
int main() {
// your code goes here
no1<string> o ; o.obj = "1";
return 0;
}
14:24: error: invalid conversion from 'const char*' to 'no::T {aka int}' [-fpermissive]
no1<string> o ; o.obj = "1";
Nel codice sopra T è obj è sempre di tipo int. Come posso forzare obj ad essere di parametro template e non typdef dichiarato nella classe base?
Grazie
Non è possibile senza fornire una conversione esplicita da 'T' a' int'. Si noti inoltre che il parametro template 'T' solo _shadows_' no :: T', questi non sono correlati. –
Ecco qual è la mia domanda su come accedere al parametro del modello T senza modificare la classe base o il parametro di ridenominazione del modello? – noname
Ancora, non puoi. –