抽象类在实施者中有细微差别

时间:2011-10-25 16:14:04

标签: c++ oop abstract-class

在当前项目中,我有名为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);
    }
}

他们无论如何要创建只定义函数doSomethingdoOtherthing的抽象类,并让类Manager和Controller实现它吗?

我想这样做是为了强制管理器和控制器之间功能名称/参数的相似性。

1 个答案:

答案 0 :(得分:2)

不,你不应该。

BlahController::doSomething需要2个参数,而BlahManager::doSomething需要3.所以你不能有一个抽象的父类强制这两个类实现相同的功能,因为它们相同的功能。

另外,你甚至不应该这样做。这些功能不会做类似的工作。例如,如果drawclass Circleclass Triangle,他们就会做类似的工作。但在这里,一个人正在执行一项工作,而另一个人正在管理它。因此,即使函数签名相似,我也绝不会让它们从一个共同的父级继承它!