gpt4 book ai didi

c++ - 使用 "superclass"对象处理继承类

转载 作者:行者123 更新时间:2023-11-30 02:41:47 26 4
gpt4 key购买 nike

我正在制作一个解决许多类似问题的程序。

我从一个看起来像(例如)的类开始:

class problem {
void init();
void solve();
int print_result();
}

但是我想将这个类扩展到不同的问题:

class problem_A : problem {
void init();
void solve();
void print_result();
}

class problem_B : problem {
void init();
void solve();
void print_result();
}

...

但在主界面中,我希望有一个对象来解决任一问题(A、B、...)并像这样处理它们:

obj.init();
obj.solve();
obj.print_result();

我如何实现这一目标? obj 应该是什么类型?

最佳答案

如果您总是想调用 init(),然后调用 solve(),然后调用 print_result(),最好将其包装在(对于 C++)笨拙地命名为模板方法模式:

class problem {
public:
virtual ~problem() = default;

void run() {
init();
solve();
print_result();
}

protected:
virtual void init() = 0;
virtual void solve() = 0;
virtual void print_result() = 0;
};

然后您的每个显式问题只需提供这些功能的实现:

class problem_A : public problem {
protected:
void init() override { .. }
void solve() override { .. }
void print_result() override { .. }
};

problem* p = new problem_A(..);
p->run(); // inits, solves, and prints the results for problem A

关于c++ - 使用 "superclass"对象处理继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27692623/

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