Fehler "Ungültiger kovarianter Rückgabetyp" in verschachtelten Klassen mit Methoden, die vorlagenbasierte Objekte zurückgeben
Der folgende C ++ - Code gibt mir diese Fehler beim Kompilieren:
covariant.cpp:32:22: error: invalid covariant return type for ‘virtual Q<B> C::test()’
covariant.cpp:22:22: error: overriding ‘virtual Q<A> B::test()’
Ich möchte die Zeile nicht ändernvirtual Q<B> test() {}
zuvirtual Q<A> test() {}
obwohl es die Kompilierungsfehler beseitigt. Gibt es einen anderen Weg, um dieses Problem zu lösen?
template <class T>
class Q
{
public:
Q() {}
virtual ~Q() {}
};
class A
{
public:
A() {}
virtual ~A() {}
};
class B
{
public:
B() {}
virtual ~B() {}
virtual Q<A> test() = 0;
};
class C : public B
{
public:
C() {}
virtual ~C() {}
virtual Q<B> test() {}
};