我在隐式转换、模板以及从模板类继承方面遇到了问题。以下是我从我的项目中提取的内容,我省略了一些类甚至是抽象的,但这与本例无关。
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();
}
基本上,我有一个模板基类
Base
,从中派生出Derived : public Base<B>
。然后我必须将其转换为最常见的Base形式,即Base<A>
。我原以为可以将从
Base<B>
派生的对象隐式地转换为Base<A>
,因为B
派生自A
。我做错了什么或者如何才能隐式地进行强制转换呢?这很重要,因为我需要在Base
方法的参数中接受所有类型的Derived类。提前感谢。