问题描述
我有一个隐式转换,模板和继承从模板类的问题。下面是我从我的项目中提取的,我已经忽略了一些类甚至是抽象的,但它不必这样。
I've got a problem with implicit casting, templates and inheritance from template classes. The following is what I extracted from my project, I have left out that some classes are even abstract, but it does not have to do with the case.
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
。
Basically, I have a template base class Base
that I derive Derived : public Base<B>
from. Then I have to cast it to the most general occuring form of Base, which is Base<A>
.
我想我可以将一个从 Base
派生的对象隐式地转换为 Base
B
源自 A
。我做错了什么,或者如何隐含地 ?这很重要,因为我需要在 Base
作为参数的方法中接受所有类型的Derived类。
I would have thought that I can cast an Object deriving from Base<B>
to Base<A>
implicitly, as B
derives from A
. Am I doing something wrong or how could I cast that implicitly? This is important as I need to accept all types of Derived classes in a method of Base
as a parameter.
提前感谢。
推荐答案
这是不可能的。 Base< A>
与 Base< B>
有 A和B之间。
This is not possible. Base<A>
has no relation to Base<B>
, regardless of the relation between A and B.
这篇关于从模板基类派生的类的隐式转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!