class - 继承和指向派生类实例的智能指针
问题描述
目前我正在制作简单的聊天程序,但在构建课程时遇到了问题。
这是我做的两个类
套接字.h
class Socket;
using SocketPtr = shared_ptr<Socket>;
class Socket
{
private:
SOCKET socket;
public:
virtual int bind(const SocketAddress& toAddress) = 0;
void setSocket(SOCKET sock);
SOCKET getSocket();
};
TCPSocket.h
class TCPSocket;
using TCPSocketPtr = shared_ptr<TCPSocket>;
class TCPSocket : public Socket
{
private:
friend class SocketUtil;
TCPSocket(SOCKET sock);
public:
~TCPSocket();
int bind(const SocketAddress& toAddress) override;
int listen(int backLog = SOMAXCONN);
int connect(const SocketAddress& toAddress);
TCPSocketPtr accept(SocketAddress& fromAddress);
int32_t send(const void* data, size_t length);
int32_t receive(void* data, size_t length);
};
我正在尝试使用带有共享指针的 tcp 套接字实例,但是当我尝试访问 from 的成员函数时TCPSocket
,vector<SocketPtr>
我无法访问它们,因为来自向量的实例的类型是shared_ptr<Socket>
.
现在,我只是在将它们投射到shared_ptr<TCPSocket>
with之后使用它们,static_pointer_cast<TCPSocket>(exampleSocket)
但我认为我不应该构建这样的类。
任何有关为套接字编程构建更好的类的帮助将不胜感激。
对不起,我的英语不好。
解决方案
当我这样做时,我通常会得到两个类,一个接受器和一个连接。接受器等待连接请求并将其传递给创建新连接线程并开始侦听的套接字使用者。也许是这样的。
推荐阅读
- vulkan - 如何使用 vulkan 在运行时更改纹理?
- python - 如何在枚举中包含 Jsonschema 多类型参数?
- python - 在 rnn 中实现图像分类
- python - 如何使用 pip 在 mac OS 上安装 mecab-python3
- shopify - Shopify 交易管理 api 提供 404
- c# - 如何将C#中的StringBuilder参数传递给python中的ctypes,这不是正常的ctypes支持的数据类型
- excel - 将字符串添加到另一个单元格并保存原始格式文本颜色
- stanford-nlp - 如何使 stanford.nlp.process.DocumentPreprocessor 更快?
- python-3.x - 浏览器使用带有签名版本 4 的 HTML POST 表单上传到 S3
- javascript - 回调 - 复制对象值,然后将它们重置为值 0