每个子类组合的功能

时间:2018-08-17 20:19:21

标签: c++

我有以下设置:

class ComponentBase...

class A : public ComponentBase...

class B : public ComponentBase...

class C : public ComponentBase...

....


class ComponentOwner
{
    public:
          ComponentBase *b;
          ComponentOwner(ComponentBase *newb) : b(newb) {};
          bool couple(ComponentOwner *other)
          { //this in a non-header file, obviously
             return couple(b, other->b);
          };
          ....
}

对于ComponentBase子类的每种组合,都有重载的函数,每个子类返回相同的类型并采用相同类型的参数,例如:

bool couple(A, A);
bool couple(A, B);
bool couple(B, A); //should point to couple(A,B) 
....

遗憾的是,这不起作用,因为我无法在不知道如何进行强制转换的情况下访问ComponentBase指针的类型。

我想我的问题是:我该如何将两个类型未知的基本指针重定向到其类型所在的函数,并为子类(如枚举)提供尽可能少的额外定义?

谢谢。

编辑1:

有人建议我在ComponentBase中添加虚拟功能。

class ComponentBase
{
    public:
        virtual bool couple(ComponentBase *other) = 0;
        .....

}

class A : public ComponentBase
{
    public:
        bool couple(ComponentBase *other)
        {

直到这儿我都了解提案吗?我该如何解决其他类型?

0 个答案:

没有答案