【发布时间】:2018-07-19 17:39:07
【问题描述】:
这是我的情况。我有两个班级 X 和 Y。
X 继承自 Y。
class X : public Y
我有一个这样定义的方法:
void getSomethingFromList(std::list<Y> list);
我怎样才能像这样将 X 对象的列表传递给这个方法?
std::list<X> xList;
getSomethingFromList((std::list<Y>)xList);
【问题讨论】:
-
没有演员可以做到这一点。您可以将
std::list<X>的元素复制到另一个std::list<Y>,但您会体验到对象切片。 -
不,你不能 - 但你可以有一个
unique_ptrs 到你的基础对象的列表。 -
std::list<X>和std::list<Y>是完全不相关的类型。没有简单的方法可以做到这一点。 -
你不能,你必须复制,但最好改变界面
-
@NathanOliver 那么
std::vector可能会更好,因为在列表中保留指针不是一个好主意。
标签: c++