0

私のコードでは、次のようなものがあります。

class A
{
 enum eType
 {
  A=0,
  B,
  C
 };
 virtual eType ReturnType()
 {
  return A;
 }
};

class B : A
{
 eType ReturnType()
 {
  return B;
 }
}

class C : A
{
 eType ReturnType()
 {
  return C;
 }
}

そして、MFCCListに多くのオブジェクトBおよびCクラスがあります。このようなメソッドの書き方

auto GetObjectFromList
{
 return object;
}

適切なオブジェクトを返します。つまり、リストにある場合はオブジェクトBクラスであり、このメソッドはBクラスのメソッドでオブジェクトクラスBを返す必要があり、オブジェクトクラスCである場合、このメソッドはクラスCメソッドでオブジェクトクラスCを返す必要がありますか?C ++ 11のautoを試してみましたが、正しく実行できません。

4

2 に答える 2

1

「クラスB:パブリックA」という意味だと思いますよね?

std::auto_ptr<A> GetObjectFromList()
{
    return std::auto_ptr<A>( new B ) ;  // you can new C if you want to return a C
}
于 2012-04-29T11:15:20.337 に答える
0

まず、B と C のコレクションがあるとします。A クラスのインスタンスを持たない場合は、次のようにして純粋仮想にします。

仮想 eType ReturnType() = 0;

次に、次の方法で継承を行う必要があります。

クラス A :パブリックB

次に、質問のために、探しているインデックスにどのインスタンスが格納されているかを確認するために、dynamic_cast<> を使用する必要があります。

于 2012-04-29T11:20:38.180 に答える