C++ C++;从父引用调用子方法

C++ C++;从父引用调用子方法,c++,polymorphism,overriding,C++,Polymorphism,Overriding,我有一个 std::list<TYPE> std::list 其中可能包含类型为的子类。我需要遍历列表并调用在类型中定义的函数的子函数的重写版本,但我不知道我拥有的是类型的哪个子类,引用的类型是类型 如果我使用类型引用调用,它将调用类型的虚方法,而不是我的子类方法。有没有一种方法可以说“调用此方法的最远子类重写版本”?没有,因为可能存在从基类继承的各种子类,并且您不确定要调用哪个方法。但是,可以使用static_cast将基类引用转换为子类引用。不能将引用存储在std:

我有一个

    std::list<TYPE> 
std::list
其中可能包含类型为的子类。我需要遍历列表并调用在类型中定义的函数的子函数的重写版本,但我不知道我拥有的是类型的哪个子类,引用的类型是类型


如果我使用类型引用调用,它将调用类型的虚方法,而不是我的子类方法。有没有一种方法可以说“调用此方法的最远子类重写版本”?

没有,因为可能存在从基类继承的各种子类,并且您不确定要调用哪个方法。但是,可以使用static_cast将基类引用转换为子类引用。

不能将引用存储在
std::list
中,并且列表不包含
类型的子类的实例

如果将
类型
的子类的实例分配给
类型
,它将被“切片”,这意味着所有子类信息都将丢失。这就是调用
类型
方法的原因-对象是
类型
,而不是
类型
的子类


如果需要多态性,则必须在列表中存储指针-
TYPE*
或智能指针。

类型a是指向指针的typedef还是指向引用(指向实际类型)?我想再看看您的设计。它将调用类型的虚方法,而不是我的子类方法。。。您的虚拟函数出错了。