CAsyncSocket 没有子类化?

Posted

技术标签:

【中文标题】CAsyncSocket 没有子类化?【英文标题】:CAsyncSocket without subclassing? 【发布时间】:2016-05-04 15:09:43 【问题描述】:

我正在寻找一种无需子类化即可使用 CAsyncSocket 的方法。到目前为止,在我发现的所有示例和教程中,它们都是它的子类,我想避免它。

提前谢谢你

【问题讨论】:

【参考方案1】:

CAsyncSocket 旨在通过子类化来使用。它具有虚拟方法 - OnConnectOnReceive,必须由子类覆盖,以便应用程序代码处理事件。

【讨论】:

谢谢,那么没有子类化就没有办法使用了吗? 必须将其本质上呈现为一个普通的 CSocket。【参考方案2】:

不需要从CAsyncSocket 派生来使用它,尽管客户通常会这样做。如果您不派生(并实现回调处理程序),则几乎不可能以异步方式使用套接字。

CAsyncSocket 与任何其他 C++ 类一样,并且可以以几乎相同的方式实例化(在具有自动存储持续时间的堆栈上,或者 - 更常见的是 - 在具有动态存储持续时间的免费存储中)。 MSDN 提供了使用“裸”CAsyncSocket:Windows Sockets: Using Class CAsyncSocket 的教程。

【讨论】:

干杯伙伴,我想我已经看过那个教程了。问题在于它根本没有解释如何与其他类一起使用它 @user3770392:这仅仅是因为将CAsyncSocket 与其他类一起使用并没有什么特别有趣的地方。这只是您的普通 C++ 课程。您具体需要了解什么? 不知道你是否熟悉Qt,我想做类似的事情,例如当一个数据包到达时,另一个方法被调用。我想尽可能避免子类化。 @user3770392:您计划如何在不从CAsyncSocket 派生并实现自己的通知处理程序的情况下获得有关传入数据的通知?由于您一直在重复您希望避免从某个类派生,这听起来像是您真的在尝试避免学习 C++。 总要学习肯定,但在 C++ 中有很多方法可以避免子类化。只传递一个函数指针或函子对我来说就可以了

以上是关于CAsyncSocket 没有子类化?的主要内容,如果未能解决你的问题,请参考以下文章

MFC- 网络编程

CAsyncSocket

CAsyncSocket::OnReceive 未在 DLL 中调用

iOS子类化UIControl没有响应

没有子类化的 QOpenGLWidget

有没有办法“子类化”修饰符?