【发布时间】:2010-03-03 23:35:57
【问题描述】:
我前段时间遇到过这个问题,我放弃了,但最近又回来了。
#include <iostream>
class element2D;
class node2D
{
public:
void (element2D::*FunctionPtr)();
void otherMethod()
{ std::cout << "hello" << std::endl;
((this)->*(this->FunctionPtr))(); //ERROR<-------------------
}
};
class element2D
{
public:
node2D myNode;
void doSomething(){ std::cout << "do something" << std::endl; }
};
int main()
{
element2D myElement;
myElement.myNode.FunctionPtr = &element2D::doSomething; //OK
((myElement).*(myElement.myNode.FunctionPtr))(); //OK
return 0;
}
我在标记线上遇到错误:
pointer to member type 'void (element2D::)()' incompatible with object type 'node2D'
非常感谢您的帮助。今天有一个类似的问题部分帮助了我:link。 但这似乎不是我问题的完整答案。
其实这两个问题只有一个区别——函数调用的点。
感谢您的宝贵时间
【问题讨论】:
标签: c++ function-pointers member-function-pointers