1. 程式人生 > >MFC程式中主、子對話方塊類之間獲取CSocket類物件出錯問題解析:error C2248: “CSocket::CSocket”: 無法訪問 private 成員(在“CSocket”類中宣告)

MFC程式中主、子對話方塊類之間獲取CSocket類物件出錯問題解析:error C2248: “CSocket::CSocket”: 無法訪問 private 成員(在“CSocket”類中宣告)

  • (1)錯誤描述:在MFC程式中主對話方塊類利用網路套接字CSocket類和下位機進行通訊;在MFC程式中子對話方塊類想要獲取主對話方塊類的網路套接字變數時,可以通過

CMainDlg* parent;  //指向主對話方塊的指標

獲取到主對話方塊的指標進而獲取到指向套接字變數的指標,當時無法獲取到網路套接字,不能進行套接字的成員函式操作如Close()的問題:

錯誤提示為:

錯誤 1     error C2248: “CSocket::CSocket”: 無法訪問 private 成員(在“CSocket”類中宣告)

 

  • (2)問題分析:使用CSocket網路套接字時,只能直接在主執行緒中進行,不用另開執行緒;CSocket套接字類物件在主執行緒中,子對話方塊類物件想要獲取到主對話方塊類的套接字時,子對話方塊沒有套接字物件或主套接字環境不同、執行緒不同,進而導致矛盾,不能獲取主對話方塊類的CSocket類物件。

 

  • (3)解決:在主對話方塊類物件中進行CSocket類物件的操作,子對話方塊類物件不操作CSocket類物件,但可獲取通過訪問主對話方塊類的成員函式類獲取套接字的資訊。