2010-06-21 5 views
2
을 만드는 방법

추가 다음 변경 :처리기

Emily::oSeMac^ Terminal; 
    Emily::AsyncSocketController^ _socketManager; 
    delegate void DataArrival(String^, array<unsigned char, 1>^, System::Net::IPEndPoint^); 

    void _socketManager_onDataArrival(String^ SocketID, array<unsigned char, 1>^ SocketData, System::Net::IPEndPoint^ RemoteIP) 
    { 
     System::Object^ retData = Terminal->WhoCame (SocketID, SocketData, RemoteIP, _socketManager, 0); 
    } 
    Form1(void) 
    { 
     InitializeComponent(); 
     _socketManager = gcnew Emily::AsyncSocketController(2000); 
     _socketManager->onDataArrival += gcnew DataArrival(this, &AC_WebPassManager::Form1::_socketManager_onDataArrival); 
     _socketManager->Start(); 
     Terminal = gcnew Emily::oSeMac(); 
    } 

오류 오류 C2664 : '에밀리 :: AsyncSocketController :: onDataArrival :: 추가': 매개 변수 1 변환 할 수 없습니다 'AC_WebPassManager :: Form1에 :: DataArrival ^' 'Emily :: AsyncSocketController :: onDataArrivalEventHandler ^' 1> 사용할 수있는 사용자 정의 변환 연산자가 없습니다. 또는 1> 가리키는 형식과 관련이 없습니다. 변환은 reinterpret_cast, C 스타일 캐스트 또는 함수 스타일 캐스트가 필요 1>

답변

1
 
_socketManager->onDataArrival += gcnew DataArrival(this, 
    &Test::Form1::_socketManager_onDataArrival_); 

DataArrival 대리자입니다 : 아마

 
public delegate DataArrival(String^, array<unsigned char, 1>^, System::Net::IPEndPoint^); 

이미 다른 이름으로, 어딘가에 정의는 -이 위임 정의를 보면 Emily 네임 스페이스.

+0

코드를 변경하십시오. Emily :: oSeMac^Terminal; Emily :: AsyncSocketController^_socketManager; public : delegate DataArrival (String ^, array <부호없는 char, 1> ^, System :: Net :: IPEndPoint ^); 공극 _socketManager_onDataArrival (문자열^SocketID 배열 <부호 문자 1>^SocketData 시스템 :: 넷 :: IPEndPoint로^RemoteIP) \t \t { 시스템 개체 :: =^retData 터미널 -> WhoCame (SocketID, SocketData, RemoteIP , _socketManager, 0); \t \t} – user372145

+0

를 Form1 (공극) \t \t \t \t { \t의 InitializeComponent(); \t \t \t _socketManager = gcnew Emily :: AsyncSocketController (2000); \t \t \t _socketManager-> onDataArrival + = gcnew DataArrival (this, & AC_WebPassManager :: Form1 :: _ socketManager_onDataArrival); \t \t \t _socketManager-> Start(); \t \t \t 터미널 = gcnew Emily :: oSeMac(); \t \t – user372145

+0

오류 1> d : \ projects \ ac_webpassmanager \ ac_webpassmanager \ Form1.h (36) : 오류 C2146 : 구문 오류 : ';'이 (가) 없습니다. 식별자 'DataArrival'앞에 1> d : \ projects \ ac_webpassmanager \ ac_webpassmanager \ Form1.h (36) : 오류 C4430 : 누락 된 형식 지정자 - 가정합니다. 참고 : C++은 default-int 을 지원하지 않습니다. 1> d : \ projects \ ac_webpassmanager \ ac_webpassmanager \ Form1.h (36) : 오류 C4430 : 누락 된 유형 지정자 - int가 사용됩니다. 참고 : C++는 default-int 을 지원하지 않습니다. d> \ projects \ ac_webpassmanager \ ac_webpassmanager \ Form1.h (36) : – user372145