我已經閱讀了許多關於這個問題的不同文章,數組不是被多態處理,而是應該使用指針數組,而且它背後的理由對我來說很清楚。如何使用多態指針的數組或向量?
但是,我無法找到它是如何完成的例子,我似乎無法得到它的工作。考慮下面的代碼:
#include <vector>
class Base
{
public:
Base();
virtual ~Base();
};
class Derived : Base
{
public:
Derived();
~Derived();
};
void foo(std::vector<Base*>)
{
// do something
}
int main()
{
std::vector<Derived*> bar;
foo(bar);
return 0;
}
編譯此提供錯誤消息
could not convert 'bar' from 'std::vector<Derived*>' to 'std::vector<Base*>
我缺少的東西或者是設計甚至是根本性的缺陷?提前致謝。