chip_definition/Isrc/NLBChipDefinitionEditor.C:20: error: no matching function for call to `nlb::gui::chip_definition::ChipDefinitionEditor::connect(QAction*, const char*, nlb::gui::chip_definition::ChipDefinitionEditor* const, const char*)'
我从代码中收到此错误:
qDebug() << dynamic_cast<QObject*>(this);
connect(m_engine->actionRegister().actionAt(nlb::gui::base::ACTION_ID_CONTEXT_REMOVE_CHIP), SIGNAL(triggered(bool)), this, SLOT(onRemoveSelectedChips()));
错误表明this(ChipDefinitionEditor*)
在QObject*
被评论时不是dynamic_cast
而是connect
。 ChipDefinitionEditor
当然来自QObject
。怎么会发生这种情况?
答案 0 :(得分:3)
Qt期望connect
的参数属于QObject*
类型。鉴于此形式的错误:
no matching function for call to `connect(SOMETYPE*, const char*,
SOMEOTHERTYPE*, const char*)'
编译器隐含地声明它没有指示SOMETYPE
和SOMEOTHERTYPE
是QObject
的信息,给出了该翻译单元所包含的内容。通常,只需包含SOMETYPE
/ SOMEOTHERTYPE
的头文件,就可以为编译器提供确定SOMETYPE
/ SOMEOTHERTYPE
继承自QObject
所需的内容。在其他情况下(例如您的),您需要确保SOMETYPE
/ SOMEOTHERTYPE
已动态转换为QObject
。
值得注意的是,当编译器有足够的信息用于一种类型而不是另一种类型时,错误消息会略有改变。例如,如果您修复了SOMETYPE
但不是SOMEOTHERTYPE
的错误,则错误消息会略有变化:
no matching function for call to `connect(QObject*, const char*,
SOMEOTHERTYPE*, const char*)'