Założenia:
Mam klasę Server, która coś wykonuje(tutaj dodaje 10 do zapytania).
Z klasą Server komunikuję się za pomocą klasy Terminal.
Chciałbym, aby Terminal zawsze był gotowy na nowe zapytania i nie czekał na odpowiedź. Server, po wykonaniu zadania ma powiadomić Terminal i podać mu wynik.
Wymyśliłem sobie, że Terminal będzie przechowywał wskaźnik do Servera, a Server wskaźnik do Terminala.
No i tu pojawia się error: invalid use of incomplete type.
Da się to jakoś obejść nie wprowadzając dodatkowych klas?
#include <iostream>
class Server;
class Terminal{
public:
void setServer(Server* server){
server = server;
}
void send(int request){
server->send(request); //tutaj invalid use of incomplete type 'class Server'
}
void receive(int response){
std::cout<<response;
}
private:
Server* server;
};
class Server{
public:
Server(Terminal* terminal){
this->terminal = terminal;
}
void send(int request){
terminal->receive(request+10);
}
private:
Terminal* terminal;
};
int main(){
Terminal* terminal = new Terminal();
Server* server = new Server(terminal);
terminal->setServer(server);
}