将附加参数传递给第一个参数是函数指针的函数

时间:2016-01-20 16:07:42

标签: c++ function oop pointers

假设我们有一个具有公共成员函数的类VirtualGridDriver

static CString AddTask(void (*proc)(VGridTaskParam parameters, CString str),
                       VGridTaskParam parameters, CString str);

此外,假设我们有一个具有公共成员函数的类CSchedulerDlg

static void runJob(VGridTaskParam parameters, CString str);

请注意,类VGridTaskParam包含一些必要的参数,以将任务添加到队列中。

在我的main()源代码中,我可以编写并成功运行函数调用:

VirtualGridDriver::AddTask(&CSchedulerDlg::runJob, parameters, m_strConnection);

我只想将其他参数传递给VirtualGridDriver::AddTask,如下所示:

VirtualGridDriver::AddTask(&CSchedulerDlg::runJob, parameters, m_strConnection, x);

其中x是int

请注意,附加的整数(将在main()范围内实例化)传递给上述函数。我对更改VGridTaskParam课程不感兴趣。

如果有任何不清楚的地方请评论。我会尽快添加其他信息。

更新:我已按照建议的评论完成,但现在我收到了错误消息。 这是我改变的:

VirtualGridDriver,我现在有:

static CString AddTask(void (*proc)(VGridTaskParam parameters, CString str, int x), VGridTaskParam parameters, CString str, int x);

CSchedulerDlg,我现在有:

static void runJob(VGridTaskParam parameters, CString strConnection, int x);

我从这些变化中得到的错误是:

错误LNK2001:未解析的外部符号“public:static class std :: basic_ofstream> CSchedulerDlg :: impFl”(?impFl @ CSchedulerDlg @@ 2V?$ basic_ofstream @ DU?$ char_traits @ D @ std @@@ std @ @A)

通常这个错误是因为在.cpp文件中找不到函数定义,但我有如下所示:

void CSchedulerDlg::runJob(VGridTaskParam parameters, CString strConnection, int x) {// do stuff}

通过这些更改,我应该能够将该方法调用为:

int x = 1;
VirtualGridDriver::AddTask(&CSchedulerDlg::runJob, parameters, m_strConnection, x);

但是,我仍然收到上述错误消息。

0 个答案:

没有答案