【发布时间】:2025-12-01 04:50:02
【问题描述】:
我有以下类架构:
class Animal
{
// ...
}
class Cat : public Animal
{
// ...
}
class Dog : public Animal
{
// ...
}
// + Several other derived classes
在我的代码的另一部分,我有一个函数,它遍历一个动物列表,并且需要在几个派生类的情况下执行专门的操作,否则需要执行默认操作。考虑到以下限制,我该如何优雅地处理这种情况:
- 我想将新代码保留在 Animal 及其衍生代码之外 因为关注点分离而分类。
- 我想避免在类型或枚举上使用 switch 语句,因为它感觉很臭。
【问题讨论】:
-
您可以阅读double dispatch in C++ 以获得一些想法。
-
您能详细说明“动物列表”吗?你的意思是
list<Animal*>?
标签: c++ templates inheritance