【发布时间】:2016-11-28 12:50:19
【问题描述】:
有一个父类,有两个子类扩展父类:child1,child2,我把子类看成父类,像这样:
function(Parent *c){
c->someMethod();
}
但是 child 有一个 child2 没有的方法。我尝试添加一个if语句来判断这个类是否是child1这样的:
function(Parent *c){
if(c->getType() == 'child1'){
c->someMethod();
}
}
但是出现了错误:'class Parent'没有名为'someMethod'的成员,那么,如何处理呢?
【问题讨论】:
-
显而易见的答案是“你投”。 正确的答案是,“你重新审视你的设计,因为它错误地使用了多态性”。
-
Visitor pattern 是可能的重新设计。
标签: c++