Ahoj, zkouším se trošku hrabat v TCP a snažím se do toho zapojovat i třídy a právě zde jsem narazil na problém. Mám tyto dvě třídy:
class SocketPermit; // Deklarace SocketPermit
class SocketConnection; // Deklarace SocketConnection
class SocketPermit
{
char* ip;
public:
SocketPermit (SocketConnection *SocketConnectionThread)
{
ip = SocketConnectionThread->IP; // Zkopíruj IP adresu z třídy SocketConnection do třídy SocketPermit
SocketConnectionThread->CloseConnection(); //Ukonči spojejí Soketu z třídy SocketConnection
}
};
class SocketConnection
{
public:
char *IP;
SOCKET client;
SocketConnection(SOCKET ClientSocket)
{
SOCKADDR_IN client_info = {0};
int addrsize = sizeof(client_info);
client = ClientSocket;
getpeername(client, (sockaddr*) &client_info, &addrsize);
IP = inet_ntoa(client_info.sin_addr);
SocketPermit SP(this); // "Zavolej" třídu SocketPermit a předej jí odkaz na tuto třídu
}
~SocketConnection()
{
CloseConnection();
}
void CloseConnection()
{
closesocket(client);
cout << "[" << IP << "] Connection closed!" << endl;
}
};
Snažím se o to, aby třída SocketConnetion předala odkaz sama sebe třídě SocketPermit, která vyhodnotí potřebné informace a popřípadě spustí SocketConnection::CloseConnection().
Pořád se mi to ale nedaří..
Hází mi to tyto chyby:
error C2027: use of undefined type 'SocketConnection'
error C2227: left of '->IP' must point to class/struct/union/generic type
Poradí někdo?
Díky