-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 は基本クラスのインスタンスなので、これらのメソッドにアクセスできません。

どうすればこれを解決できますか?

両方の派生クラスに対して 2 つの異なるオブジェクトを作成することはできません。両方で setFoo() メソッドを使用する必要があり、同じ属性ではなくなるからです。

4

1 に答える 1

3

基本クラスでこの関数を仮想として宣言するか、基本クラスで宣言する必要があります。

于 2013-11-14T22:14:04.177 に答える