我正在编写一个简单的EchoServer
类,继承自QTcpServer
. 当我在构造函数中连接信号和槽时,它并不顺利。
class EchoServer : public QTcpServer {
//Q_OBJECT
public:
EchoServer(int listenling_port) {
this->listen(QHostAddress(), listenling_port);
connect(this, SIGNAL(newConnection()), this, SLOT(HandleIncomingConnection()));
}
public slots:
void HandleIncomingConnection() {
auto echo_handler = EchoServerHandler(this->nextPendingConnection());
echo_handler.Echo();
}
private:
};
该应用程序确实侦听端口,并且可以远程登录。但是控制台显示
“ QObject::connect: 没有这样的插槽 QTcpServer::HandleIncomingConnection() ”,
似乎它被识别this
为基类QTcpServer
指针。
此外,如果我留Q_OBJECT
在代码中,它不会编译,说
"错误 LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall EchoServer::metaObject(void)const " (?metaObject@EchoServer@@UBEPBUQMetaObject@@XZ) ",
他们有关系吗?