假设我们有一个具有公共成员函数的类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);
但是,我仍然收到上述错误消息。