作者kuro44776 (羽嵐)
看板C_and_CPP
標題[問題] 一個socket+class的語法
時間Sun Jun 13 21:44:13 2010
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