我在隐式转换、模板和模板类继承方面遇到了问题。以下是我从我的项目中提取的内容,我省略了一些类甚至是抽象的,但这与大小写无关。
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
的方法中接受所有类型的派生类作为一个参数。
提前致谢。
最佳答案
这是不可能的。 Base<A>
与 Base<B>
没有关系, 不考虑 A 和 B 之间的关系。
关于c++ - 从模板基类派生的类的隐式转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238544/