Qt使用回调函数报错“函数调用缺少参数列表,请使用&xxx创建指向成员的指针”解决办法
2017-11-22 09:52
751 查看
c++中,把一个类的成员函数作为回调函数使用时会出现该错误,原因是成员函数中隐性传递了this指针,导致前后参数列表不匹配进而报错。
该问题其实和qt关系不大,往往是c++语句的编写上有问题。但当函数隶属于Qt的MainWindow时(往往如此)一些常用处理方法则不能解决问题,比如函数指针声明时加上MainWindow::,赋值时加上&MainWindow::,这样会报错“Mainwindow不是类或命名空间”。这里对Qt中的Mainwindow的理解还是不足,故采用友元函数方法。
解决方法:将该成员函数改为该类的友元函数即可。
如:
typedef int (*FUNC) (int* a, int *b);//回调函数声明,即函数指针
class A
{
……
friend
int F (int* f,int*
g);//友元函数
……
}
int F (int* f,int* g)//友元函数定义
{
……
}
……
FUNC Fun = F;//使用
该问题其实和qt关系不大,往往是c++语句的编写上有问题。但当函数隶属于Qt的MainWindow时(往往如此)一些常用处理方法则不能解决问题,比如函数指针声明时加上MainWindow::,赋值时加上&MainWindow::,这样会报错“Mainwindow不是类或命名空间”。这里对Qt中的Mainwindow的理解还是不足,故采用友元函数方法。
解决方法:将该成员函数改为该类的友元函数即可。
如:
typedef int (*FUNC) (int* a, int *b);//回调函数声明,即函数指针
class A
{
……
friend
int F (int* f,int*
g);//友元函数
……
}
int F (int* f,int* g)//友元函数定义
{
……
}
……
FUNC Fun = F;//使用
相关文章推荐
- “error C3867: “XXX”: 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针”的错误
- “error C3867: “XXX”: 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针”的错误
- static函数 函数调用缺少参数列表;请使用“&XXX”创建指向成员的指针;类的static成员函数
- error C3867: “Point::getX”: 函数调用缺少参数列表;请使用“&Point::getX”创建指向成员的指针
- error: 函数调用缺少参数列表;请使用“&BinTree<char>::_PrintNode”创建指向成员的指针
- 函数调用缺少参数列表;请使用“&Student::Printf”创建指向成员的指针 问题解析
- error C3867: “A::fun1”: 函数调用缺少参数列表;请使用“&A::fun1”创建指向成员的指针
- “Caculate::writehtml”: 函数调用缺少参数列表;请使用“&Caculate::writehtml”创建指向成员的指针
- 函数调用缺少参数列表;请使用“&****Dlg::getThread”创建指向成员的指针”--多线程函数调用
- 多线程error C3867: 函数调用缺少参数列表问题解决办法:
- 巧妙解决问题:&CMFCcodeDlg::RunCommands”创建指向成员的指针。MFC多线程调用要求调用的接口必须是全局函数或静态成员函数
- 使用CreateThread 时报错,函数调用缺少参数列表
- error C3867: “_com_error::ErrorMessage”: 函数调用缺少参数列表 错误的解决
- Effective JavaScript Item 22 使用arguments来创建接受可变参数列表的函数
- C++中,如何定义和使用指向成员函数的指针
- c#调用c++封装dll 参数为字符串输出函数的解决办法
- 使用纯C函数指针调用C++的类成员函数
- 指针参数在函数中不能改变指针指向的原因和解决方法
- C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
- C++里,在类中使用指向类成员函数的指针