2016-08-26 2 views
0

I가 (헤더 파일)이 다음 구조체 :매개 변수로 작동하는

struct StateTransitions { 
    State currentState; 
    State nextState; 
    void (*fn)(); 

    StateTransitions (State currentState, State nextState, void (*fn)()) 
    { 

    } 
}; 

그리고 내부 (벡터로이 구조체의 일부 인스턴스를 밀어하려고 .cpp 파일) :

void MyClass::Start() 
{ 

} 

transitions.push_back(StateTransitions(Low, Started, &MyClass::Start)); 

이 컴파일 할 수 없습니다. 클래스 내의 생성자에 대한 내 선언이 정확한지 확실하지 않습니다.

생성자를 추가하는 올바른 방법은 무엇입니까? 따라서이 유형의 객체를 벡터에 추가 할 수 없습니까?

전 C++ 11을 사용하고 있습니다.

+3

함수 포인터와 멤버 함수 포인터가 다릅니다. 'void (MyClass :: *)()'를 원할 수도 있습니다. – songyuanyao

+1

컴파일러 오류를 포함해야합니다. – szym

+0

@songyuanyao : 네가 맞아, 혼란스러워. 이것은 지금 구축하는 것 같습니다. – Kobe

답변

2

멤버 함수에 대한 포인터를 정적 함수로 전달할 수 없습니다. 그 이유는 멤버 함수는 this 포인터에 전달해야 할 것이고 정적 함수는 그렇지 않다는 것입니다. (그리고 컴파일러는 당신이 무엇이든지 통과하는 타입을 검사해야합니다.)

참고 : Function pointer to member function

관련 문제