【发布时间】:2014-06-01 15:03:32
【问题描述】:
是否有任何正确的方法来声明一个类(接口)Limit,它可以用作接口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";}
};
使用 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++ inheritance architecture interface