将派生对象列表传递给期望获取基对象列表的函数
passing a list of derived objects to a function that expects to get a list of base objects
Base{
public:
Base(int i);
virtual void doSomething(int z);
}
Derived:public Base{
public:
Derived(int j);
}
void myFunc(list<Base> myList,int y){
for(list<Base>::iterator it = myList.begin();it!=myList.end();++it){
it->doSomething(y);
}
}
main(){
list<Derived> dList;
myFunc(dList)
}
我似乎无法传递派生列表而不是基础。我知道这样做可能会有问题,因为可以向列表中添加不同的派生类型,但我只想更改列表中的对象,而不是添加更多对象。我尝试玩 const 但仍然没有帮助。我不能使用 for_each 函数,因为做某事会得到一个参数。有什么想法吗?
我有 2 种类型的派生,我想使用基于两种派生类型的列表定义的函数
然后使用模板:
template<typename T>
void myFunc(list<T> myList, int y) {
for(typename list<T>::iterator it = myList.begin(); it!=myList.end(); ++it){
it->doSomething(y);
//use any function present in Base
}
}
此函数将接受 Base
类型的任何实例或其任何派生类的任何list
。
你不能强迫编译器使用多态性来接受它期望list<U>
的list<T>
,无论T
和U
是什么,因为这些总是不相关的多态。
相关文章:
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 如何在不销毁对象的情况下返回对象列表
- 如何使用Q_PROPERTY公开自定义对象列表
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- c++ 循环访问对象列表并删除对象
- 循环访问对象列表 c++
- Cython正在获取C++对象列表的长度
- 如何在屏幕上显示对象列表?
- Strcmp 类行为应用于C++中的对象列表
- 如何迭代指针指向的对象列表?
- C++对象列表数组
- 使用BOOST :: PYTHON返回裸露的类对象列表,这些对象是不可复制的
- 返回对象列表
- C 链接对象列表
- 使用for_each从对象列表中调用打印功能
- 从对象列表中获取具有特定成员值的所有对象
- 按指针列出的 C++ 对象列表
- 子类对象列表重新解释为基类对象列表?(C++11).
- 在C++中的混合对象列表中使用相同的方法
- Python:我们应该如何编写一个函数来返回对象/列表和布尔标志