C:\Users\22836\Desktop\QT\untitled1\mainwindow.cpp:27: error: Reference to non-static member function must be called
时间: 2023-08-27 20:19:52 浏览: 161
这个错误是因为你尝试在lambda表达式中引用了非静态成员函数。在lambda表达式中,只能直接引用静态成员函数或者全局函数。
要解决这个问题,你可以使用`this`指针来调用非静态成员函数。修改代码如下:
```cpp
connect(ui->checkBox, &QCheckBox::stateChanged, [=](int state){
qDebug() << state << endl;
if(state == 2){
strList.push_back(this->ui->checkBox->text());
}
//state 2选中 0未选中
});
```
通过使用`this`指针,你可以访问到当前对象的成员变量和成员函数。这样就能够调用非静态成员函数了。请确保在lambda表达式中使用`this`指针时,确保当前对象是有效的。
相关问题
D:\Code\untitled1\mainwindow.cpp:14: error: expected type-specifier before 'knob' ..\untitled1\mainwindow.cpp: In constructor 'MainWindow::MainWindow(QWidget*)': ..\untitled1\mainwindow.cpp:14:22: error: expected type-specifier before 'knob' knob *knob = new knob(this); ^~~~
这个错误提示是因为编译器无法识别 'knob' 类型。可能的原因是您没有正确包含该类的头文件或未定义该类。
请确保您已经包含了 'knob' 类的头文件,并且该类已经定义和实现。另外,'knob' 类名应该是大写的,而不是小写的。
如果您已经包含了正确的头文件并且该类已经定义,您可能需要检查命名空间是否正确,或者您需要在类名前加上命名空间的限定符。
如果您无法解决这个问题,请提供更多的代码和错误信息,以便我能够更好地理解问题所在。
D:\aaagxzhsy\untitled\mainwindow.cpp:53: error: undefined reference to `MainWindow::DataSend()'
这个错误提示是因为在mainwindow.cpp文件中调用了MainWindow类中的DataSend()函数,但是编译器没有找到该函数的定义。这通常是由于以下几种情况导致的:
1. DataSend()函数没有被实现。如果DataSend()函数只是在类的声明中声明了,但是没有在实现文件中进行定义,那么编译器就会提示undefined reference错误。需要在实现文件中添加DataSend()函数的定义,并且确保函数实现的正确性。
2. DataSend()函数被定义在了其他文件中。如果DataSend()函数被定义在了其他文件中,那么需要在mainwindow.cpp文件中添加该函数的头文件,并且确保链接器能够正确地将该函数与mainwindow.cpp文件进行链接。
3. DataSend()函数的访问权限不正确。如果DataSend()函数被定义为私有函数,那么只能在类的内部进行调用,如果在mainwindow.cpp文件中进行调用,编译器就会提示undefined reference错误。
综上所述,需要检查DataSend()函数的定义是否正确,并且确保在mainwindow.cpp文件中可以正确地访问该函数。
阅读全文