Errore con il modello funzione membro
Domanda
sto ottenendo errore di compilazione in seguito il codice.
class A
{
public:
A()
{
}
~A()
{
}
void func()
{
cout <<"Ha ha ha \n";
}
};
class C
{
public:
C()
{
}
~C()
{
}
template<typename type> func()
{
type t;
t.func();
}
void callme()
{
func<A>();
}
};
Soluzione
VC6 non supporta i modelli di funzione di membro. In realtà hanno diverse soluzioni:
Sposta func()
fuori della definizione di classe
template<typename type> void func()
{
type t;
t.func();
}
o riscrittura callme()
void callme()
{
A a;
a.func();
}
o un modello di classe di utilizzo
class C
{
public:
template<class T> struct func
{
void operator()()
{
T t;
t.func();
}
};
void callme()
{
func<A>()();
}
};
Altri suggerimenti
La definizione di func<T>()
non specifica il tipo di ritorno, che non è valido in C ++.
Dovrebbe essere:
template<typename type> void func()
{
type t;
t.func();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow