2013-05-28 4 views
0

전문 될 필요가 이 메서드를 호출하려면기본 클래스 나 메소드 포인터를 관리하는 클래스가 파생 클래스

FNMETHOD f = ...; 
(pC->*f)(); 

이제 이러한 우선 순위 객체를 소유하는 기본 클래스가 있습니다. 그러나이 객체는 파생 된 클래스에서만 특수화되어야합니다 (그렇지 않으면 기본 클래스의 메서드 만 사용할 수 있습니다). 결국 나는 Base에서 파생 된 클래스의 컬렉션 (예 : 벡터)을 가질 수 있고 우선 순위 객체로 구성된 메소드를 호출 할 수 있기를 원합니다.

는 더 좋은 방법이 있나요 ... 그것은 하나가 정의하는 것입니다 클래스와 템플릿을 전문으로하는 어색한 것 같다 나에게

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::function<int(void)> 객체를 저장할 수 있습니다 당신에게 조디

답변

1

감사 또는 당신의지도에 부스트 아날로그입니다. setPrio 함수에 전달할 때이 함수 객체에 임의의 구체적인 metod를 바인딩합니다.

+0

고마워요! std :: bind를 사용해야한다는 것을 알기까지 잠시 시간이 걸렸지 만 이제는 작동합니다! – user1479670

관련 문제