从模板基类派生的类的隐式转换

opa*_*tut 5 c++ inheritance templates casting implicit

我遇到了隐式转换,模板和模板类继承的问题.以下是我从项目中提取的内容,我遗漏了一些类甚至是抽象的,但它与案例没有关系.

class A {};
class B : public A {};

template <typename T> class Base {};
class Derived : public Base<B> {};

int main() {
    Derived d;
    Base<A>* base = new Derived();
}
Run Code Online (Sandbox Code Playgroud)

基本上,我有一个Base我派生的模板基类Derived : public Base<B>.然后我必须把它投射到Base的最常见的形式,即Base<A>.

我原本以为我可以从一个派生出来Base<B>Base<A>隐式B派生对象A.我是不是做错了什么或者我怎么能投那含蓄?这很重要,因为我需要在Base作为参数的方法中接受所有类型的派生类.

提前致谢.

Pup*_*ppy 6

这是不可能的.Base<A>没有相对于Base<B>A和B之间的关系,不管