我有一个带有公共(public)方法CGrandMother
的virtual bool Compute()
类,
virtual bool Compute()
{
return false;
}
从
CGrandMother
公开推导CMother
,它不实现Compute
。现在从CMother
公开地实现C1
的C2
和virtual bool Compute()
。现在virtual bool C1::Compute()
和virtual bool C2::Compute()
分别做了许多分别适合于C1
和C2
的工作,但也做了许多适合CMother
的相同工作。现在有一个CFamily
类,它具有一个指向CMother
的指针,并且在代码中几乎所有地方Compute
都通过以下形式的行来调用ptrCMother->Compute();
我如何才能排除在
CMother
和C1
中完成的与C2
相关的常见内容,这样我就不必更改所有这些ptrCMother->Compute();
行? 最佳答案
答案应该很简单。您说过“很多适合CMother的东西”。因此,您应该将它们分解为CMother的成员函数。由于似乎只有从CMother派生的类才需要该功能,因此应将新成员函数标记为“protected”。 @ 0x5453所说的是一种方法;但是我建议使用一个新函数,以便不使用公共(public)方法CMother::Compute。可能还有另一个CMother子类未实现Compute,而是依靠CMother::Compute来完成某些操作。