是否有任何正确的方法来声明一个类(接口(interface))Limit,它可以用作接口(interface) Param 和 Lim 的“组合” >?
基接口(interface)类 Param 和 Lim:
class Param {
public:
virtual char *toStr(void) = 0;
};
class Lim {
public:
virtual char *toStrL(void) = 0;
};
ParamA 和ParamB 实现接口(interface)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";}
};
使用 Limit 我想访问方法 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();
}
最佳答案
不,那是不可能的。运行时只能知道您在类声明中显式继承的派生类。您以后不能插入额外的类。
关于c++ - 组合接口(interface)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131491/