在我的代码中,我有点像:
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,但我做不到。
答案 0 :(得分: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
}
答案 1 :(得分:0)
首先,你说你有一个B和C的集合。如果你没有A类的实例,可以通过
使它成为纯虚拟的虚拟eType ReturnType()= 0;
其次,您需要通过以下方式进行继承:
A类:公开 B
然后,对于这个问题,您需要使用dynamic_cast&lt;&gt;查看您要查找的索引中存储的实例。