2014-09-16 5 views
0

다른 void 함수에 void 함수를 전달하려고합니다. 실패했습니다. 그래서 ExitButton이라는 클래스 안에이 함수를 만들었습니다. ExitButton.h :void 함수를 다른 함수의 인수로 전달

그런 다음이 클래스를 다른 클래스에 포함합니다. ofApp.h :

include "ExitButton.h" 
class ofApp : public ofBaseApp{ 

void update(); 
void setup(); 
StartButton *startButton; 

} 

그래서 내 ofApp.cpp에서이 같은 업데이트 함수를 호출 할

:
void ofApp::update(){ 


exitButton->setup(setup()); // This throws me the following error: Cannot initialize a parameter of type 'void (*)' with an rvalue of type void 
    } 

그래서 내가 가정

, 난 단지 포인터가 무효 기능을 전달할 수 있습니다? void 함수를 다른 함수에 매개 변수로 전달할 수 있습니까?

#include <iostream> 
using namespace std; 

class ExitButton{ 
public: 
    void setup(void (*_setup)()) 
    {  
     _setup(); // we call the function pointer 
    }; 
};  


void setup() // this is a void function 
{ 
    cout << "calling void setup()" << endl; 
} 

int main() 
{ 
    ExitButton eb; 
    eb.setup(setup); // use a void function as a parameter 
} 
+1

왜 당신은'()'후'setup'이 있습니까 : –

+2

거기에'setup'을 호출하고 싶지는 않지만 그것을 넘기고 싶습니다. 또한, 멤버 함수는 일반적인 함수와 완전히 다른 동물입니다. – Deduplicator

+0

@DavidSchWartz()를 사용하더라도 같은 오류 – mauricioSanchez

답변

1

당신이 원하는 아마? 함수를 전달하려고합니다. 그러나`()`는 함수를 호출 *하는 데 사용됩니다.
+0

ofApp.cpp의 설정 기능은 그렇게해야합니까? – mauricioSanchez

+0

아니요, 문제는'void setup (void (* _setup));'에 있습니다. void 함수 인 포인터가 아닌 void 포인터 인 매개 변수를 사용합니다. – vsoftco

+0

시도했지만 다음 오류가 발생합니다 : 비 정적 멤버 함수에 대한 참조를 호출해야합니다. 인수없이 호출하는 것이 었습니까? 그리고()를 붙이면. 그런 다음 void (*)()가 void와 호환되지 않는다고 말하기 전에 오류가 발생합니다. – mauricioSanchez

관련 문제