2013-03-25 3 views
1

사용자 지정 .NET ref 클래스를 사용하여 단추 시스템을 제어하려고합니다. 이 클래스는 부모 폼에 추가 된 클래스 내 PictureBox로 구성됩니다. 클릭을 감지하면 부모 클래스 내부의 메소드 인 생성자에 지정된 함수를 호출해야합니다. 유효한 포인터 투 부재 없음 "다음Ref 클래스의 포인터 간 함수

//in the custom class file 
public ref class CButton { 
    private: void (*callingproc)(void); 
    public: 
    CButton(void (*cproc)(void)) { 
     callingproc = cproc; 
    } 
    button_dowork() { 
     //do our code to detect if the click was in the right place and call our proc 
     callingproc(); 
    } 
}; 
//in the form.h 
void cp(void) { 
    //do our form work 
} 
void Form_CreateCButton() { 
    CButton^ t = gcnew CButtom(cp); 
} 

위의 라인을 따라 에러"& NS를 사용 : 형태 : CP 부재에 대한 포인터를 생성하는 "원인 : 예컨대

지시를 따를 때 "관리 된 클래스를위한". 어떤 아이디어?

+2

여기에서 대리인을 사용해야합니다. C++/CLI 프로그래밍에 대한 소개 글을 다루고 있습니다. –

+0

C++에서 C++로 태그 재 지정 - CLI – JBentley

+0

"C++/CLI 프로그래밍 입문 텍스트에서 다루기 쉽습니다."-이 링크가있을 수 있습니까? – Dave

답변

0

클래스가 (전역) 함수에 대한 포인터를 저장하고있는 것 같습니다.

아마도 void cp() 함수가 클래스 ("form"?) 안에 있습니다. 이 경우 실제로는 멤버 함수입니다. 전역 함수는 멤버 함수와 다르므로 클래스는 포인터를 저장할 수 없습니다.

아마도 대리인을 고려해야합니다 (특히 .Net을 사용하는 경우). 참조 : http://msdn.microsoft.com/en-us/library/ms379617(v=vs.80).aspx