gpt4 book ai didi

c++ - 如何调用父类类型列表的子类的方法? C++

转载 作者:行者123 更新时间:2023-11-28 07:33:17 25 4
gpt4 key购买 nike

好的,我已经设置好了情况:

ClassA() 
{
method();
}
ClassB: public ClassA()
{
overrides method();
}

我在另一个类上遇到这种情况:

list<ClassA> members;
addMethod(ClassA newMember)
{
members.push_back(newMember);
}

update()
{
for(std::list<ClassA>::iterator list_iter = members.begin(); list_iter != members.end(); list_iter++)
{
ClassA tklb = *list_iter;
tklb.method();
}

return 0;
}

问题是,当我执行 tklb.method() 时,我想从子类调用 on 但他总是从父类调用,因为它是一个列表。我需要这个,因为我还有其他类是 classA 的子类,并且会以不同的方式执行“方法”。

最佳答案

您需要使用指向项目的指针才能使其表现出多态性。你现在正处于 object slicing 的危险之中因为可以通过复制构造函数将对象放入列表中。

此外,要使方法按照您描述的方式运行 ( polymorphism ),您需要将该方法声明为 virtual . (我假设缺少返回类型是错字?)。

更改为 std::list<ClassA*> (或者更好的是一个合适的智能指针)。

关于c++ - 如何调用父类类型列表的子类的方法? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com