如何修复'无法使用类型为value_type(也就是Derived*)的左值初始化Base*类型的返回对象?

use*_*517 3 c++ debugging inheritance casting c++11

我有一个基类和一个派生类.当我尝试将派生类指针转换为基类指针时,我得到一个编译错误.

class Base  {
  ..
}

class Derived: public Base {

}

class X {
    public:
        Base* getWriter(int shard) {
            return writers[0][shard];
        }
    private:
        mutable vector<vector<Derived*>> writers_;
}
Run Code Online (Sandbox Code Playgroud)

而我得到的错误是

错误:无法
在"return writers [0] [shard];"行上初始化类型为'value_type'(又名为'Derived*')的左值的'Base*'类型的返回对象

120*_*arm 5

定义首部X不包括限定类的头Derived,所以编译器不知道之间的关系BaseDerived.