假设我有一个基类和派生类,并且有一个函数接受一个指向基类的STL向量指针:
有没有办法将指向派生类的指针列表传递给它?例如:
上述代码将导致以下编译错误:
class A { public: int x; };
class B : public A { };
void foo(const vector<A*> &va) {
for (vector<A*>::const_iterator it = va.begin(); it < va.end(); it++)
cout << (*it)->x << endl;
}
有没有办法将指向派生类的指针列表传递给它?例如:
vector<B*> vb;
// ... add pointers to vb ...
foo(vb);
上述代码将导致以下编译错误:
error: could not convert ‘vb’ from ‘std::vector<B*>’ to ‘std::vector<A*>’
尽管B*可以转换为A*。
最后,如果有针对普通指针的解决方案,它是否也适用于boost共享指针?
Base
类也不属于Derived
类,对吗?我的意思是,使用模板的整个目的是进行类型无关的编程。是吗? - Recker