OEPS ! Topic in verkeerd fora deel geplaatst!! (graag verplaatsen, iemand..
)
Hey Tweakers,
Ik loop met een klein probleempje, ik ben bezig met een simpele TCP client (again...) aan het schrijven. Maar daar wil iets totaal niet in lukken en lop vast met 'static'.
Ik heb een connect functie die een thread maakt voor ConnectCallback. Maar ConnectCallback moet dan wel een static functie zijn, anders kan ik de _startthread niet uitvoeren. Maar omdat ConnecCallback static is kan ik ook niet connecten met de socket _sock(networksession.h). dan moet ik de _sock ook static maken. En dat is iets wat ik dus niet wil. Bestaat hier een enige oplossing voor ?
Het betreft de volgende code:
De fout code/debug code:
Hier nog de networksession.cpp en networksession.h
networksession.h
networksession.cpp

Hey Tweakers,
Ik loop met een klein probleempje, ik ben bezig met een simpele TCP client (again...) aan het schrijven. Maar daar wil iets totaal niet in lukken en lop vast met 'static'.
Ik heb een connect functie die een thread maakt voor ConnectCallback. Maar ConnectCallback moet dan wel een static functie zijn, anders kan ik de _startthread niet uitvoeren. Maar omdat ConnecCallback static is kan ik ook niet connecten met de socket _sock(networksession.h). dan moet ik de _sock ook static maken. En dat is iets wat ik dus niet wil. Bestaat hier een enige oplossing voor ?
Het betreft de volgende code:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| void TcpClient::Connect(char* host, unsigned short port) { NetworkData::sckAddr addr; addr.host = host; addr.port = port; _beginthread(TcpClient::ConnectCallback, NULL, (void*)&addr); } void TcpClient::ConnectCallback(void* params) { NetworkData::sckAddr *addr = (NetworkData::sckAddr*)params; sockaddr_in sckAddr; sckAddr.sin_family = AF_INET; sckAddr.sin_port = htons(addr->port); sckAddr.sin_addr.S_un.S_addr = inet_addr(addr->host); if(connect(_sock, (sckAddr*)(&sckAddr), sizeof(sckAddr))!=0) { cout << "Could not connect with: " << addr->host << " on port: " << addr->port << endl; } else { cout << "Connected to: " << addr->host << " on port: " << addr->port << endl; } _endthread(); } |
De fout code/debug code:
code:
1
| error: invalid use of member 'NetworkSession::TcpClient::_sock' in static member function |
Hier nog de networksession.cpp en networksession.h
networksession.h
networksession.cpp
[ Voor 7% gewijzigd door xehbit op 09-10-2011 12:39 ]