严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2259 “TestQtUdp”: 无法实例化抽象类 TestQtUdp C:\Users\tanji\Downloads\Compressed\HP-Socket-dev\HP-Socket-dev\Windows\Demo\TestQtUdp\TestQtUdp\main.cpp 7 怎么解决
时间: 2023-06-29 21:15:38 浏览: 141
无法实例化抽象类
这个错误的原因是TestQtUdp类是一个抽象类,不能被实例化。解决方法是实现TestQtUdp类中所有的纯虚函数,或者将它们声明为非纯虚函数。
在这个例子中,TestQtUdp类继承了CUdpClientListener类,它包含了一些纯虚函数。您需要在TestQtUdp类中实现这些纯虚函数,或者将它们声明为非纯虚函数。例如:
```cpp
class TestQtUdp : public QMainWindow, public CUdpClientListener {
Q_OBJECT
public:
TestQtUdp(QWidget *parent = nullptr);
~TestQtUdp();
private:
// ...
EnHandleResult OnPrepareListen(IUdpNode* pSender, SOCKET soListen) override;
EnHandleResult OnSend(IUdpNode* pSender, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const BYTE* pData, int iLength) override;
EnHandleResult OnReceive(IUdpNode* pSender, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const BYTE* pData, int iLength) override;
EnHandleResult OnError(IUdpNode* pSender, EnSocketOperation enOperation, int iErrorCode, LPCTSTR lpszRemoteAddress, USHORT usRemotePort, const BYTE* pData, int iLength) override;
EnHandleResult OnShutdown(IUdpNode* pSender) override;
// ...
};
```
在这里,我们使用了override关键字,以确保在派生类中正确地覆盖了基类中的虚函数。
阅读全文