组合接口类

时间:2014-04-17 11:07:33

标签: c++ inheritance architecture interface

有没有正确的方法可以声明一个类(接口)限制,它可以用作接口 Param Lim

基础接口类 Param Lim

class Param {
public:
    virtual char *toStr(void) = 0;
};

class Lim {
public:
    virtual char *toStrL(void) = 0;
};

ParamA ParamB 实现接口 Param

class ParamA : public Param {
public:
    virtual char *toStr(void){ return "A";};    
};

class ParamB : public Param {
public:
    virtual char *toStr(void){ return "B";} 
};

LimitA LimitB 另外实现 Lim

class LimitA : public ParamA, public Lim {
public:
    virtual char *toStrL(void){ return "LA";}
};

class LimitB : public ParamB, public Lim {
public:
    virtual char *toStrL(void){ return "LB";}
};

使用限制我想访问方法 toStr() toStrL()

class Limit : public Param, public Lim {
};

void example(void){
    LimitA limitA;
    LimitB limitB;
    Limit *limit = polymorphic_downcast<Limit *>(&limitB);  // unable to type cast correctly
    char *str1 = limit->toStr();
    char *str2 = limit->toStrL();
}

1 个答案:

答案 0 :(得分:1)

不,那是不可能的。运行时只能知道您在类声明中显式继承的派生类。您以后不能插入额外的课程。