我有课
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元素中找到?如您所见,我无法直接访问这些字段,因为这些字段不是(也不能是).objectactionthis->myBars[i]->actionBarBase
编辑
我可以比较object。我添加一个virtual size_t getObject (){};to并在likeBarBase中覆盖它。然后我比较两个,但我不知道如何转换为数字......Barvirtual size_t getObject (){ return (size_t)this->object; };size_taction