c++ - 多态,为什么我做不到?

标签 c++ oop templates polymorphism

class BaseA
{
}

class B : public BaseA
{
}

template <class T>
class C : public vector<T>
{
}

void someFunction (void)
{
    C<B> myClass;

    // I can't seem to do this...is it not possible?
    vector<BaseA> converted = ((vector<BaseA>) myClass);
}

请参阅代码中的注释以了解我正在尝试做的事情。

最佳答案

B 的 vector 不是 A 的 vector ,即使 B 是 A(我假设 A 和 BaseA 之间存在混淆)

尝试

vector<A> converted(myClass.begin(), myClass.end());

这可能是你想表达的。

(顺便说一句,继承自 vector is bad idea in general ,它不是为此而设计的。)

关于c++ - 多态,为什么我做不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10092130/

相关文章:

c++ - 模板化 ctor 上的编译器错误(这是编译器错误吗?)

c# - 什么是空接口(interface)?

c++ - 如何使用模板继承和组件

c++ - C++ 模板中的链接错误

c++ - C++03 中默认初始化和值初始化的区别?

c++ - C++ Builder 中是否有 COM 事件处理的工作示例?

java - 如何从不包含 JTextArea 的方法附加 JTextArea?

oop - 父类和父类(super class)的区别

c++ - Templates::Stroustrup 的示例未编译

C++11 多线程,通过引用传递