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;
 }
}

我的 MFC CList 上有很多对象 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 回答