【发布时间】:2014-05-10 22:08:12
【问题描述】:
我想知道如何在下面给出的场景中避免代码重复。
(有个问题:
How do I check if an object's type is a particular subclass in C++?
答案是这是不可能的,我猜即使使用动态演员表成员访问也是不可能的。)
所以我想知道您如何避免在不同的方法中使用几乎相同的代码,而只有一种方法会有一些额外的操作。
class Basic {
...
}
class Advanced : public Basic {
...
}
AnotherClass::lengthy_method(Basic *basic) {
// do a lot of processing, access members of basic
if (*basic is actually of class Advanced)
// do one or a few specific things with members of Advanced
// more processing just using Basic
if (*basic is actually of class Advanced)
// do one or a few specific things with members of Advanced
// more processing just using Basic
}
同样从设计的角度来看,AnotherClass::lengthy_method 不想在Basic 或Advanced 中定义,因为它并不真正属于它们中的任何一个。它只是在他们的同类上运作。
我很好奇语言专家知道什么,我希望有一个不错的解决方案,至少可以通过 C++11 的一些功能。
【问题讨论】: