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

How to convert a C function call in C++ compatible syntax?

本文关键字:语法 转换 函数调用 何用 C++      更新时间:2023-10-16

我有一个关于*处理程序函数的问题,我不明白这是什么,而且在代码中没有这个函数的声明。我在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++?

它只是一个函数指针,然后可以从modesReadFromClient();函数中调用handler()

申报

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);

为了在C++中调用非静态函数,请声明该类的一个实例并在该实例上调用该函数。

MainWindow mainWindow;
mainWindow.modesReadFromClient(...);