Fehler bei der Memberfunktion Vorlage
Frage
Ich erhalte Kompilierungsfehler in folgendem Code ein.
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>();
}
};
Lösung
VC6 nicht Mitglied Funktionsschablonen unterstützen. Sie haben tatsächlich mehrere Lösungen:
Verschieben func()
aus der Klassendefinition
template<typename type> void func()
{
type t;
t.func();
}
oder Umschreiben callme()
void callme()
{
A a;
a.func();
}
oder Verwendung Klassen-Template
class C
{
public:
template<class T> struct func
{
void operator()()
{
T t;
t.func();
}
};
void callme()
{
func<A>()();
}
};
Andere Tipps
Die Definition von func<T>()
nicht angibt, dessen Rückgabetyp, die in C ++ ungültig ist.
Es sollte sein:
template<typename type> void func()
{
type t;
t.func();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow