//Parent.h
class Parent
{
public:
virtual void foo() = 0;
};
//Child.h
class Child : public Parent
{
public:
virtual void foo(){cout << "inside function foo()" << endl;}
virtual void bar(){cout << "inside function bar()" << endl;};
};
int main( int argc, char** argv ){
Parent* pa = new Child;
pa->foo();
pa->bar(); //Error, class Parent have no member bar
return 0;
}
除了将这些函数添加到Parent
类中之外,我如何避免此错误
您可以将指针声明为“子类型”。您仍然可以将其传递给需要Parent指针的函数。
其他解决方案涉及使用,dynamic_cast<Child>(pa)
尽管这经常被认为是不良设计,需要使用它,因为它破坏了多态性应该完成的功能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句