Qt信号槽中形参名不能为`connect`

14 篇文章 0 订阅

我计划使用Qt的信号槽函数传递硬件的连接状态,于是有如下的信号定义和槽定义:

class ClassA: public QObject
{
    Q_OBJECT

public:
    explicit ClassA(QObject *parent = nullptr);
    ~ClassA() override;
    
signals:
    void SigRemoteConnectStateChanged(QString ipAddr, bool connect);
}
class ClassB: public QObject
{
    Q_OBJECT

public:
    explicit ClassB(QObject *parent = nullptr);
    ~ClassB() override;
    
public slots:
    void SltConnectStatusChanged(QString ipAddr, bool connect);
}

然后连接上述的信号槽。出现了如下的报错:

ClassB.cpp:000:00: error: declaration of ‘connect’ shadows a member of ‘ClassB’ [-Werror=shadow]
 void ClassB::SltConnectStatusChanged(QString ipAddr, bool connect)
                                                                               ^
In file included from /opt/Qt5.12.7/5.12.7/gcc_64/include/QtCore/QObject:1:0,
                 from remote/RemoteViewerManager.h:16,
                 from remote/RemoteViewerManager.cpp:9:
/opt/Qt5.12.7/5.12.7/gcc_64/include/QtCore/qobject.h:308:13: note: shadowed declaration is here
             connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, const QObject *context, Func2 slot,
             ^~~~~~~
cc1plus: all warnings being treated as errors

看这个原因是connect重定义类,也就是形参命名与系统的函数命名冲突了,变成了警告信息,我这里设置的编译器是将警告当成错误,于是报错类。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值