Qt信号槽中形参名不能为"connect"
Qt信号槽中形参名不能为connect
,会与信号槽连接的关键函数有冲突,并报警告
我计划使用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
重定义类,也就是形参命名与系统的函数命名冲突了,变成了警告信息,我这里设置的编译器是将警告当成错误,于是报错类。