我有一个关于* handler函数的问题,我无法理解这是什么,在代码中没有这个函数的声明。
我在C modesReadFromClient(client *c, char *sep, int (*handler)(client *));
现在我想在C++
中使用它。在头文件中我有这段代码 -
void modesReadFromClient(client *c, char *sep, int (*handler)(client *));
在源文件中这段代码 -
void MainWindow::modesReadFromClient(struct client *c, char *sep,
int(*handler)(struct client *))
但我有一个错误 -
无效使用非静态成员函数
modesReadFromClient(c,"\n",HexMessage);
我认为int* handler
出了点问题。如何将此代码翻译为C ++?
答案 0 :(得分:2)
它只是一个函数指针,然后您可以从handler()
函数中调用modesReadFromClient();
。
声明
int (*handler)(struct client *)
使handler
成为函数指针,然后可以像这样调用handler
struct client *someClient;
int handlerResult;
/* initialize someClient */
handlerResult = handler(someClient);
如果你有像这样的处理函数
int handlerFunction(struct client *c)
{
/* do somthing with 'c' */
}
然后你可以打电话
modesReadFromClient(c, "\n", handlerFunction);
答案 1 :(得分:0)
为了在C ++中调用非静态函数,声明该类的实例并在该实例上调用该函数。
MainWindow mainWindow;
mainWindow.modesReadFromClient(...);
答案 2 :(得分:0)
我无法找到解决方案,我尝试使用QT和Qtcpsocket类