C++ QList作为函数参数-链接错误-LNK2019

C++ QList作为函数参数-链接错误-LNK2019,c++,qt,lnk2019,qlist,C++,Qt,Lnk2019,Qlist,我对QList作为函数参数有一个问题,如果您能帮助我,我将非常高兴 我有以下代码,例如: void SpinBoxList_Enable(QList<QWidget *> *spinBoxList) { foreach(QWidget* mWidget,*spinBoxList) mWidget->setEnabled(false); } (controlBoardSpinBoxList是QList的一个变量) 功能ToggleBoards\u Slo

我对QList作为函数参数有一个问题,如果您能帮助我,我将非常高兴

我有以下代码,例如:

void SpinBoxList_Enable(QList<QWidget *> *spinBoxList)
{
    foreach(QWidget* mWidget,*spinBoxList)
        mWidget->setEnabled(false);
}
controlBoardSpinBoxList
QList
的一个变量)

功能
ToggleBoards\u Slot(bool)
是一个使用的插槽。编译时,我收到以下错误消息:

1>cmosaixserialnumber.obj : error LNK2019: unresolved external symbol "private: void __cdecl CMosaixSerialNumber::SpinBoxList_Disable(class QList<class QWidget *> *)" (?SpinBoxList_Disable@CMosaixSerialNumber@@AEAAXPEAV?$QList@PEAVQWidget@@@@@Z) referenced in function "public: void __cdecl CMosaixSerialNumber::ToggleBoards_Slot(bool)" (?ToggleBoards_Slot@CMosaixSerialNumber@@QEAAX_N@Z)
1>cmosaixserialnumber.obj : error LNK2019: unresolved external symbol "private: void __cdecl CMosaixSerialNumber::SpinBoxList_Enable(class QList<class QWidget *> *)" (?SpinBoxList_Enable@CMosaixSerialNumber@@AEAAXPEAV?$QList@PEAVQWidget@@@@@Z) referenced in function "private: void __cdecl CMosaixSerialNumber::on_ControlBoardCheckBox_StateChanged(int)" (?on_ControlBoardCheckBox_StateChanged@CMosaixSerialNumber@@AEAAXH@Z)

1>cmosaixserialnumber.obj:错误LNK2019:未解析的外部符号“private:void\u cdecl cmosaixserialnumber::SpinBoxList\u Disable(class QList*)”(?SpinBoxList)_Disable@CMosaixSerialNumber@@AEAAXPEAV$QList@PEAVQWidget@@@@@Z) 在函数“public:void\u cdecl CMosaixSerialNumber::ToggleBoards\u插槽(bool)”中引用(?开关板_Slot@CMosaixSerialNumber@@QEAAX_N@Z)

1> cmosaixserialnumber.obj:错误LNK2019:未解析的外部符号“private:void u cdecl cmosaixserialnumber::SpinBoxList_Enable(类QList*)”(?SpinBoxList)_Enable@CMosaixSerialNumber@@AEAAXPEAV$QList@PEAVQWidget@@@@@Z) 在函数“private:void\u cdecl CMosaixSerialNumber::on\u ControlBoardCheckBox\u StateChanged(int)”中引用(?在控制板上复选框_StateChanged@CMosaixSerialNumber@@AEAAXH@Z)

如何解决此问题?

您使用指针调用函数,但函数参数不是指针。我建议您将参数更改为引用(以避免复制):

然后不使用操作员的地址调用它:

SpinBoxList_Enable(controlBoardSpinBoxList);

您使用指针调用函数,但函数参数不是指针。我建议您将参数更改为引用(以避免复制):

然后不使用操作员的地址调用它:

SpinBoxList_Enable(controlBoardSpinBoxList);

Qt中的容器是引用计数的,并隐式共享以供读取。您不需要将
QList
作为指针传递,甚至不需要将其作为引用传递(正如Joachim所建议的),尽管这是容器(尤其是深度复制的STL)的常见和良好实践


您可以传递实际的QList,只要您仅从中读取,它就不会被复制,如果您尝试写入操作,它将创建一个副本并写入。请阅读更多相关内容。

Qt中的容器是引用计数的,并且隐式共享以供读取。您不需要将
QList
作为指针传递,您不需要n需要将其作为引用传递(正如Joachim所建议的),即使这是容器(尤其是深度复制的STL)的通常和良好实践


您可以传递实际的QList,只要您仅从中读取,它就不会被复制。如果您尝试写入操作,它将创建一个副本并写入。请阅读更多相关内容。

还有,
*函数体中的spinBoxList
需要更正。您好,Joachim,我现在这样做了,我收到以下错误消息:1>cmosaixeserialnumber.obj:错误LNK2019:未解析的外部符号“private:void\u cdecl CMosaixSerialNumber::SpinBoxList\u Disable(class QList&)”(?SpinBoxList_Disable@CMosaixSerialNumber@@埃亚哈耶夫$QList@PEAVQWidget@@@@@Z) 在函数“public:void\u cdecl CMosaixSerialNumber::ToggleBoards\u插槽(bool)”中引用(?开关板_Slot@CMosaixSerialNumber@@QEAAX_N@Z)1> cmosaixserialnumber.obj:错误LNK2019:未解析的外部符号“private:void u cdecl cmosaixserialnumber::SpinBoxList_Enable(类QList&)”(?SpinBoxList_Enable@CMosaixSerialNumber@@埃亚哈耶夫$QList@PEAVQWidget@@@@@Z) 在函数中引用“private:void\u cdecl CMosaixSerialNumber::on\u ControlBoardCheckBox\u StateChanged(int)”(?on\u ControlBoardCheckBox_StateChanged@CMosaixSerialNumber@@AEAAXH@Z)我会在函数体中使用const QList&though和
*spinBoxList
需要更正。你好,Joachim,我现在这样做了,我收到了以下错误消息:1>cmosaixserialnumber.obj:error LNK2019:unresolved外部符号“private:void\u cdecl cmosaixserialnumber::spinBoxList\u Disable(类QList&)”(?SpinBoxList_Disable@CMosaixSerialNumber@@埃亚哈耶夫$QList@PEAVQWidget@@@@@Z) 在函数“public:void u cdecl CMosaixSerialNumber::ToggleBoards_插槽(bool)”中引用(?ToggleBoards_Slot@CMosaixSerialNumber@@QEAAX_N@Z)1> cmosaixserialnumber.obj:错误LNK2019:未解析的外部符号“私有:void u cdecl CMosaixSerialNumber::SpinBoxList_Enable(类QList&)“(?SpinBoxList_Enable@CMosaixSerialNumber@@埃亚哈耶夫$QList@PEAVQWidget@@@@@Z) 在函数“private:void\u cdecl CMosaixSerialNumber::on\u ControlBoardCheckBox\u StateChanged(int)”中引用(?on\u ControlBoardCheckBox_StateChanged@CMosaixSerialNumber@@AEAAXH@Z)我会使用constqlist&though@FrankOsterfeld-取决于使用上下文,如果您不打算更改任何内容,则设置为
const
,这应该不用说。在他的示例中,他不修改容器。@Frankosterfield-取决于使用上下文,如果您不打算更改任何内容,则设置为
const
,这应该不用说,在他的例子中,他没有修改容器。
SpinBoxList_Enable(controlBoardSpinBoxList);