我有课
class BarBase {
};
和一个派生的模板类,它存储指向成员函数的指针和指向同一类的对象的指针
template<typename TypeName> class Bar: public BarBase
{
void ( TypeName::*action ) ( void );
TypeName* object;
};
我创建实例Bar
并将指向它们的指针存储在另一个类的向量中Foo
class Foo {
private:
vector<BarBase*> myBars;
...
};
现在的问题。Foo 有一个模板函数
template <typename TypeName>
void Foo::foo( TypeName* object , void ( TypeName::*action ) ( void ) )
在此函数中,如何在具有字段且等于此函数参数的myBars
元素中找到?如您所见,我无法直接访问这些字段,因为这些字段不是(也不能是).object
action
this->myBars[i]->action
BarBase
编辑
我可以比较object
。我添加一个virtual size_t getObject (){};
to并在likeBarBase
中覆盖它。然后我比较两个,但我不知道如何转换为数字......Bar
virtual size_t getObject (){ return (size_t)this->object; };
size_t
action