void CVisualStudioDemoDoc::updateLine(void)
{
int newln = GetLineNumber(p_buf);
reinterpret_cast<CVisualStudioDemoView *>(m_viewList.GetHead())->SetCurrentLineNumber(ln, newln);
ln = newln;
}
我想从代码的另一部分调用此函数,而不必给出对象指针和包含头文件。
我想把它称为普通的无效函数。
if (changementLigne == true) {
currentLine = prog;
// TODO : appeler le callback de X2
updateLine();
Suspendre();
changementLigne = false;
}
我不知道是否可能,因为CVisualStudioDemoDoc类是一个MFC类,我找不到可以使用的指针。
答案 0 :(得分:3)
你不能这样做。
如果成员函数引用成员变量,则需要有效的this
指针。如果您不包含声明该函数的头文件,则编译器无法知道您所指的是什么。除非你说出来,否则怎么知道updateLine()
是一个函数呢?
如果你试图从C代码调用C ++成员函数,那么你需要编写一个包装器。类似于以下内容(未经测试):
.h文件:
extern "C" {
CallUpdateLine(void* data);
}
.cpp文件:
extern "C" {
CallUpdateLine(void* data)
{
CVisualStudioDemoDoc* ptr = static_cast<CVisualStudioDemoDoc*>(data);
ptr->updateLine();
}
}
还有其他questions也可能有用。