在当前项目中,我有名为BlahManager
的类和名为BlahController
的类,定义如下:
class BlahController
{
public:
void doSomething(int x, float y){
// do the work
}
void doOtherThing(char a, char* b, int c){
// do the work
}
}
class BlahManager
{
public:
BlahController m_controllers[5];
void doSomething(int blahIndex, int x, float y){
m_controllers[blahIndex].doSomething(x,y);
}
void doOtherThing(int blahIndex, char a, char* b, int c){
m_controllers[blahIndex].doOtherThing(a,b,c);
}
}
他们无论如何要创建只定义函数doSomething
和doOtherthing
的抽象类,并让类Manager和Controller实现它吗?
我想这样做是为了强制管理器和控制器之间功能名称/参数的相似性。
答案 0 :(得分:2)
不,你不应该。
BlahController::doSomething
需要2个参数,而BlahManager::doSomething
需要3.所以你不能有一个抽象的父类强制这两个类实现相同的功能,因为它们不相同的功能。
另外,你甚至不应该这样做。这些功能不会做类似的工作。例如,如果draw
和class Circle
有class Triangle
,他们就会做类似的工作。但在这里,一个人正在执行一项工作,而另一个人正在管理它。因此,即使函数签名相似,我也绝不会让它们从一个共同的父级继承它!