gpt4 book ai didi

c++ - 如何调用遍历类层次结构的成员函数

转载 作者:行者123 更新时间:2023-11-30 01:34:53 26 4
gpt4 key购买 nike

假设类具有属性/特征,我需要在派生类中积累这些属性/特征,这在 C++ 中如何工作?

struct Base
{
virtual Array names() { return { "A", "B" }; }
};

struct Derived : Base
{
Array names() override { return { "C", "D", "E" }; }
};

struct FurtherDerived : Derived
{
Array names() override { return { "F", "G" }; }
};

现在,如果我想在 Base 中实现一个递归函数 allNames() 来派生所有串联的名称,那将如何工作?例如

FurtherDerived fd;
fd.allNames() ==> {"A", "B", "C", "D", "E", "F", "G"}

Derived d;
d.allNames() ==> {"A", "B", "C", "D", "E"}

Base b;
b.allNames() ==> {"A", "B"}

我这辈子都想不通。

最佳答案

您应该在添加自己的方法之前调用每个基类方法:

struct Base
{
virtual Array names() { return { "A", "B" }; }
};

struct Derived : Base
{
Array names() override { return Base::names() + { "C", "D", "E" }; }
};

struct FurtherDerived : Derived
{
Array names() override { return Derived::names() + { "F", "G" }; }
};

这当然假设您的 Array 类型支持与 operator+ 合并。

关于c++ - 如何调用遍历类层次结构的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55338348/

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