如何在两个类之间发送/接收消息
how to send/receive a message between two classes
我有两个类源和目标,代表我想在它们之间发送和接收消息的两个主机。为此,我创建了以下类。有一个更好的方法吗 ?例如:
class Reseux
{
private:
int Nb_Source;
int Nb_destination;
public:
class Source
{
private:
int id_Source;
public:
void __fastcall Envoyer();
void __fastcall Recevoir();
int __fastcall get_id() {return (this->id_Source);};
} *Source;
//----------------------------------------------------------------
class destination;
{
private:
int id_destination;;
public:
void __fastcall Envoyer();
void __fastcall Recevoir();
int __fastcall get_id() {return (this->id_destination);};
} *destination;
};
class tMessage
{
private:
String Contenu;
int id_Source, id_Destination;
public:
bool Alert;
int __fastcall get_id_Source() {return(this->id_Source);};
int __fastcall get_id_Destination() {return(this->id_Destination);};
};
void __fastcall Reseux::Source::Envoyer(tMessage *_Message)
{ _Message=new tMessage();
_Message->id_Source=Source->get_id();
_Message->id_destination=id_destination->get_id();
destination->Recevoir(_Message);}
void __fastcall Reseux::destination::Recevoir(tMessage *_Message)
{ };
您可以尝试观察者模式,如以下内容:
#include <string>
#include <iostream>
#include <memory>
#include <vector>
class Message
{
public:
explicit Message(const std::string& text) : content(text) { }
std::string GetText() const { return content; }
private:
std::string content{ "" };
};
class Subscriber
{
public:
explicit Subscriber() { }
virtual ~Subscriber() { }
virtual void ReceiveMsg(const Message& msg) = 0;
};
class Source
{
public:
explicit Source() { }
inline void BroadcastMsg(const std::string& content)
{
Message msg(content);
for (const auto& subscriber : subscribers)
subscriber->ReceiveMsg(msg);
}
inline void AddSubscriber(Subscriber* sub) { subscribers.push_back(sub); }
private:
std::vector<Subscriber*> subscribers;
};
class Destination : public Subscriber
{
public:
explicit Destination() { }
virtual ~Destination() { }
inline virtual void ReceiveMsg(const Message& msg) override
{
std::cout << msg.GetText();
}
};
int main()
{
std::unique_ptr<Source> host1 = std::make_unique<Source>();
std::unique_ptr<Destination> host2 = std::make_unique<Destination>();
host1->AddSubscriber(host2.get());
host1->BroadcastMsg("Good morning, Vietnam!!!");
getchar();
}
相关文章:
- GCC 警告和 gcc 错误消息之间的区别
- 在 2 个并行运行的脚本(python 和 C++)之间传递消息
- 如何使用标准库网络 TS 在服务器和客户端之间发送消息C++
- 在两个进程之间传递消息
- 如何在两个类之间发送/接收消息
- 未定义的行为和格式错误之间的区别,不需要诊断消息
- msgpack:C++和Java之间的消息传递
- C++ - 在进程之间发送消息
- 是否有任何消息总是出现在WM_LBUTTONDOWN和WM_LBUTTNUP之间
- 增强ASIO和线程之间的消息传递
- 消息在网络上的两台机器之间传递
- 如何使用两个管道在子级/父级之间发送消息
- 在到应用程序之间的消息中重复WaitForSingleObject
- 在 MFC 对话框和自己的线程上的 OpenGL 控件之间传递消息
- ZeroMQ 在节点之间创建消息缓冲区
- 使用命令文件在线程之间传递消息
- 使用互斥对象与消息在线程之间共享信息
- 在C++actors框架中在类型化参与者之间转发消息的最佳实践
- 进程之间的Windows CE集中式消息队列
- HOWTO:使用Boost::asio在线程之间发布消息