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

标签 c++ templates inheritance 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();
}

基本上,我有一个模板基类 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/

相关文章:

c++ - 模板实例化不 "do inheritance"

c++ - 非静态成员函数,为每个对象创建生成一份机器代码?

c++ - 使用 For 循环更改二维数组中一行的值

c++ - 多个查找集

javascript - 需要帮助修改网站的 javascript

c++ - 模板 (C++) - 不确定是否正确

html - 默认 HTML 页面?

java - 通过父类(super class)引用变量访问子类成员

Python Logging with a common logger class mixin 和类继承

C++:通过进程ID、进程句柄和标题名称从进程中获取唯一窗口的窗口句柄的最佳方法