У меня есть две программы: сервер и клиент
class client
{
private:
Network net;
Gui gui;
};
Вот класс сети
class Network
{
public:
void receivePacket(packet)
{
Protocol::readPacket(packet)
}
};
Вот класс Gui
class Gui
{
private:
std::string informations;
public:
void displayInfo();
void updateInformation(information);
};
А вот протокол
class Protocol
{
static void readPacket(packet)
{
if (packet.command == "refreshGui")
//I need somehow to call GUI::UpdateInformation here and give the information from packet.information
}
};
Протокол рассматривается как «статический класс», что означает, что его нельзя создавать. Так что идея в том, что когда Protocol::readPacket
получить packet
с сервера, он должен иметь возможность отправлять информацию GUI
, Однако, это не всегда так, поэтому передача точки / ссылки — это не то, что я ищу.
Это не очень хорошо проиллюстрировано, но идея такова:
— Protocol::readPacket
искать, если нам нужно позвонить GUI
— Протокол не должен принимать другой аргумент и не должен быть создан.
Кто-то дал мне совет по использованию шаблона Observer. Protocol
будет предметом и GUI
Наблюдатель. Однако я не смог бы сделать это без создания протокола.
Так есть ли способ сделать это без создания экземпляра протокола?
В распределенных вычислениях сетевой менеджер узла обычно принимает сообщение и вызывает диспетчер, связанный с типом сообщения. Ваша потребность очень похожа. Вот что вы могли бы сделать:
Других решений пока нет …