gpt4 book ai didi

c++ - 创建 "Handler Registration"类型架构时,我应该如何传递处理程序?

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:51 24 4
gpt4 key购买 nike

我出于学习目的使用 C++ 编写 UDP 客户端/服务器协议(protocol),其中从我的应用程序的服务器组件到应用程序其余部分的通信是使用处理程序实现的。

例如,我可能会针对值 1 注册一个授权组件,并针对值 2 注册一个 TextMessage 组件。然后,客户端首先向授权组件发送一两条消息以进行登录,然后开始向 TextMessage 处理程序发送文本消息.

这是我现在拥有的:

class NetworkHandler {
virtual void handleMessage(const endpoint & endpoint, const buffer & message) = 0;
};

任何希望注册为组件的类只需继承 NetworkHandler 并调用

udpServer.addHandler(handler);

但是,作为一个新手,我在决定如何通过处理程序时遇到了一些问题。

我应该通过引用传递处理程序吗?这既简单又方便,但所有权问题开始发挥作用 - 调用函数可能不必担心无缘无故地保留引用。

我应该复制处理程序吗?这也很简单方便,但是这里有一个问题,我的处理程序是否可复制,或者我是否需要从类外部保留对我的处理程序的引用。

我想知道的是,对于这种情况,常见的最佳做法是什么?对不起,文字墙。

最佳答案

如有疑问,请与 shared_ptr 分享。这是 self 记录的,几乎总是有效,但以一些指针间接和一个/两个内存分配为代价。

关于c++ - 创建 "Handler Registration"类型架构时,我应该如何传递处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4856396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com