【发布时间】:2015-02-10 12:49:35
【问题描述】:
假设我有:
class Base {/*...*/}
class Derived1: public Base {/*...*/}
class Derived2: public Base {/*...*/}
..我有:
class SomeClass {
public:
template<typename DerivedType>
DerivedType GetDerived();
private:
vector<Base*> m_classes;
}
在 GetDerived() 函数中,我遍历 m_classes 向量,我想做类似的事情:
if(m_classes[i] == DerivedType) {
return m_classes[i];
}
...假设我们知道 m_classes 中的一个对象将包含一个“DerivedType”对象。
示例:
m_classes[2] = Base* BasePtr = new Derived1;
.. 在这种情况下,我想像这样使用 GetDerived 函数:
GetDerived<Derived1>();
.. 这应该返回 m_classes[2]
我该怎么做?如何将基指针对象与派生类类型进行比较?更确切地说,GetDerived() 函数应该是什么样子?
【问题讨论】:
-
How do I do this?也许问题应该是“你为什么要这样做?” -
你试过
typeid运营商吗? stackoverflow.com/a/3930720/365229