访问具有基类对象的派生类

时间:2013-11-14 22:08:25

标签: c++ class inheritance

这是我的问题:

class A {
public:
   int foo;
   void setFoo(val) { foo = val; }
};

class B1 : public A {
public:
   void foo();
}

class B2 : public A {
public:
   void bar();
}

int main()
{
   A obj;
   switch(t) // some menu
   {
   case '1':
      obj.setFoo(something);
   case '2':
      obj.foo();
   case '3':
      obj.bar();
   }

   return 0;
}

Switch处于while循环中 - 这是某种菜单。第一个案例先运行。

问题是案例2和3. obj是基类'实例,因此我无法访问这些方法。

我该如何解决这个问题?

为两个派生类创建两个不同的对象不起作用,因为我必须对它们使用setFoo()方法,而且,它将不再是相同的属性。

1 个答案:

答案 0 :(得分:3)

您应该将基类中的这些函数声明为虚函数,或者至少在基类中声明它们。