MFC程式中主、子對話方塊類之間獲取CSocket類物件出錯問題解析:error C2248: “CSocket::CSocket”: 無法訪問 private 成員(在“CSocket”類中宣告)
阿新 • • 發佈:2018-12-22
- (1)錯誤描述:在MFC程式中主對話方塊類利用網路套接字CSocket類和下位機進行通訊;在MFC程式中子對話方塊類想要獲取主對話方塊類的網路套接字變數時,可以通過
CMainDlg* parent; //指向主對話方塊的指標
獲取到主對話方塊的指標進而獲取到指向套接字變數的指標,當時無法獲取到網路套接字,不能進行套接字的成員函式操作如Close()的問題:
錯誤提示為:
錯誤 1 error C2248: “CSocket::CSocket”: 無法訪問 private 成員(在“CSocket”類中宣告)
- (2)問題分析:使用CSocket網路套接字時,只能直接在主執行緒中進行,不用另開執行緒;CSocket套接字類物件在主執行緒中,子對話方塊類物件想要獲取到主對話方塊類的套接字時,子對話方塊沒有套接字物件或主套接字環境不同、執行緒不同,進而導致矛盾,不能獲取主對話方塊類的CSocket類物件。
- (3)解決:在主對話方塊類物件中進行CSocket類物件的操作,子對話方塊類物件不操作CSocket類物件,但可獲取通過訪問主對話方塊類的成員函式類獲取套接字的資訊。