如何用C ++兼容语法转换C函数调用?

时间:2015-02-19 18:29:55

标签: c++ c

我有一个关于* 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 ++?

3 个答案:

答案 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类