-1

这是我的问题:

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() 方法,而且它不再是相同的属性。

4

1 回答 1

3

您应该在基类中将此函数声明为虚拟函数,或者在基类中声明它们。

于 2013-11-14T22:14:04.177 回答