看板 C_and_CPP 關於我們 聯絡資訊
class CClientSocket : public CSocket { private: char *pClientIP; u_short clientPort; public: CClientSocket(CServerDlg *pServDlg); virtual ~CClientSocket(); void setSourse(char *ip,u_short port); char getIP(); u_short getPort(); }; void CClientSocket::setSourse(char *ip,u_short port) { *pClientIP=*ip; clientPort=port; } char CClientSocket::getIP() { return *pClientIP; } u_short CClientSocket::getPort() { return clientPort; } 我想寫一個可以在送訊息的時候 同時顯示ip跟port 可是現在有個問題就是 void CServerDlg::ProcessPendingAccept() { //建立一個客戶端Socket物件 CClientSocket *pClientSocket = new CClientSocket(this); SOCKADDR_IN clientAddr; char *pClientIP = inet_ntoa(clientAddr.sin_addr); u_short clientPort = ntohs(clientAddr.sin_port); int socketLen = sizeof(SOCKADDR_IN); m_pListenSocket->Accept(*pClientSocket,(SOCKADDR*)&clientAddr, &socketLen);//接受客戶端的連接 //記錄ip跟port *pClientSocket->setSourse(*pClientIP,clientPort); //將客戶端Socket加入list EnterCriticalSection(&m_cs); m_listClientSocket.push_back(pClientSocket); LeaveCriticalSection(&m_cs); } 就是我在執行以上的程式碼的時候 *pClientSocket->setSourse(*pClientIP,clientPort); 這一行compile始終不會過=.= 我把pClientIP的*拿掉他會顯示illegal indirection 不拿掉會顯示cannot convert parameter 1 from 'char' to 'char *' 請問這要如何修改啊? -- 那怕是一點點自以為是的紀念 http://www.wretch.cc/blog/sgmp2555029 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.186.9
QQ29:原本就是char*了你怎麼會加一個*變char呢? 06/13 22:06
QQ29:拿掉試試看 06/13 22:06
kuro44776:請問你在講哪裡的char* ... 06/13 22:17
loveflames:*pClientIP=*ip; ←pClientIP跟ip不都是char *嗎? 06/13 22:22
loveflames:會不會是這行的問題 06/13 22:22
ccdda24:*pClientSocket->setSourse(pClientIP,clientPort); 06/13 22:22
COMPILE一樣不會過 錯誤訊息會顯示 illegal indirection
pico2k:你的程式裡pointer都亂用!? 06/13 22:42
goodGG:get/set 就不用 class 了, setSource, 不是 sourse 06/13 22:47
goodGG:getIP() 應該是回傳 string (char * in your case) 06/13 22:48
pClientIP跟clientPort都是private的 為什麼不用class? ※ 編輯: kuro44776 來自: 140.127.186.9 (06/13 23:00)
loveme00835:沒有提供多一層抽象化, 用set/get 還不如弄成public 06/13 23:43
goodGG:另外, CClientSocket 如果是 model, 那傳進 CServerDlg 06/13 23:44
goodGG:就變成 model 與 view 切不乾淨 => MVC 06/13 23:45