C ++子类扩展父类

时间:2016-11-28 12:50:19

标签: c++

有一个父类,并且有两个子类扩展了父类:child1,child2,我将子视图看作父类,如下所示:

function(Parent *c){
  c->someMethod();
}

但是孩子有一种child2没有的方法。我尝试添加一个if语句来判断该类是否为child1,如下所示:

function(Parent *c){
  if(c->getType() == 'child1'){
     c->someMethod();
  }
}

但是出现了错误:' class Parent'没有名为' someMethod'那么,如何应对呢?

2 个答案:

答案 0 :(得分:5)

由于您正在使用指向Parent的指针,因此您只能调用Parent类型具有的方法。

因此,第一个解决方案是将所有必要的方法放在Parent类中,并在子类中覆盖它们。这比下一个要好得多。

另一种可能的解决方案是dynamic_cast Parent指向必要的child指针,如果您确定,它是正确的,并且child上的调用方法指针。这是糟糕设计的标志,我建议坚持第一个解决方案。

答案 1 :(得分:0)

尝试将其动态广播为正确的类型。如果不可能,则强制转换应返回nullptr(或NULL)。