有没有正确的方法可以声明一个类(接口)限制,它可以用作接口 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();
}
答案 0 :(得分:1)
不,那是不可能的。运行时只能知道您在类声明中显式继承的派生类。您以后不能插入额外的课程。