gpt4 book ai didi

c++ - 对每个递归结构的元素执行一些操作,而无需在 C++ 中向其添加方法

转载 作者:行者123 更新时间:2023-11-28 06:42:58 26 4
gpt4 key购买 nike

任务:在 Presenter::present(... ) 方法(使用 Presenter 的私有(private)成员)。

问题:结构除了构造函数之外没有任何方法。

示例:

我有一个结构:

struct Component{
std::vector<Component *> children;
Component * parent;
std::string ID;
std::string content;
Component(ID, content){...}
};

然后我有一些代码:

Component * a, * b, * c1, * c2;
a = new Component("A", "a content");
b = new Component("B", "b content");
c1 = new Component("C1", "c1 content");
c2 = new Component("C2", "c2 content");
b->parent = a;
a->children.push_back(b);
c1->parent = b;
c2->parent = b;
b->children.push_back(c1);
b->children.push_back(c2);

我现在想要将 a 指针传递给我的 Presenter::present(...):

class Presenter{
private:
std::string somethingImportant; // = "sth";
...
public:
std::string present(Component * a){
... //on each component's children (and component itself):
//get ID and content then add something from this (Presenter)
//or modify the ID/content a bit.
//At the end, return the result (for all components together).
}
...
}

输出到 std::string(或控制台,nvm)所有 ID-content 对,如:

A a content sth
B b content sth
C1 c1 content sth
C2 c2 content sth

可以通过在 Component 结构中添加一些 recursivePresent(std::string &output) 方法来轻松实现。

但我想知道是否可以在不修改Component结构(不向其中添加任何方法)的情况下做到这一点?

EDIT(因评论而制作):请注意,输出使用了一些 Presenter 的私有(private)/ protected 成员/方法 - 我不能假设它会是只是一个“某事”,就像一个例子。

我找不到这样的解决方案,但我相信这里有人可以用一些疯狂的想法让我感到惊讶;)

最佳答案

回复评论:@firda 你能解释一下吗?我不确定你是什么意思。
我的评论是:为什么不在 Presenter 上安装它(recursivePresent 助手)?

class Presenter {
void presentRecursive(Component *c, std::ostream& out) {
out << c->ID << ' ' << c->content << std::endl;
for(auto p : c->children) presentRecursive(p, out);
}
public:
void present(Component *c) {
presentRecursive(c, std::cout);
}
};

关于c++ - 对每个递归结构的元素执行一些操作,而无需在 C++ 中向其添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25590603/

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