Ошибки «Недопустимый ковариантный тип возврата» во вложенных классах с методами, возвращающими объекты на основе шаблона
Следующий код C ++ дает мне эти ошибки при компиляции:
covariant.cpp:32:22: error: invalid covariant return type for ‘virtual Q C::test()’
covariant.cpp:22:22: error: overriding ‘virtual Q<a> B::test()’
</a>
Я не хочу менять линиюvirtual Q test() {}
вvirtual Q
<a> test() {}</a>
хотя это убирает ошибки компиляции. Есть ли другой способ решить эту проблему?
template 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 test() {} }; </a>