Ошибки «Недопустимый ковариантный тип возврата» во вложенных классах с методами, возвращающими объекты на основе шаблона

Следующий код 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>

Ответы на вопрос(3)

Ваш ответ на вопрос