0
類
我有其管理方法指針的類:基類被專門衍生
template<class C>
class Prioritizer {
public:
typedef int (C::*FNMETHOD) ();
typedef std::map<unsigned int, std::vector<FNMETHOD> > methlist;
// associate priority values with methods
virtual void setPrio(unsigned int iPrio, FNMETHOD f);
// call all methods for given priority
virtual void execPrio(C *pC, int iPrio);
}
方法execPrio()需要一個指向到該方法指針,以便屬於 類調用這個方法
FNMETHOD f = ...;
(pC->*f)();
現在我有一個基類擁有這樣一個Prioritizer對象。但是這個對象只能專門用於派生類(否則我只能使用基類的方法)。 最後,我希望能夠有一個從Base派生的類的集合(例如向量),並調用由它們的Prioritizer對象組織的方法。
我想出的最好的是這樣的:
template<class C>
class Base {
public:
// ... other stuff ...
Prioritizer<C> m_prio;
}
class Der1 : public Base<Der1> {
public:
virtual int testDer1();
int init() {
m_prio->setPrio(7, testDer1);
};
}
對我來說似乎尷尬專門的模板與類一個是關於定義...
有沒有更好的辦法?
謝謝 喬迪
謝謝!我花了一段時間才發現我必須使用std :: bind,但現在它可以工作了! – user1479670