#include <iostream>
using namespace std;
class WVObject
{
protected:
typedef bool (*EvalFun)(unsigned long);
bool evalA (unsigned long id) const { return true; }
bool evalB (unsigned long id) const { return false; }
bool test (EvalFun fnctToEval) const
{
//hier der Zugriff auf die übergebene Methode
bool res = (*fnctToEval) (4);
return res;
}
public:
virtual void parse() = 0;
};
//WVKnoten.hpp
class WVKnoten : public WVObject
{
public:
void parse () { cout << test(&WVObject::evalA); }
};
int main() {
WVKnoten obj;
obj.parse();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgV1ZPYmplY3QKewpwcm90ZWN0ZWQ6CiAgICB0eXBlZGVmIGJvb2wgKCpFdmFsRnVuKSh1bnNpZ25lZCBsb25nKTsKIAogICAgYm9vbCBldmFsQSAodW5zaWduZWQgbG9uZyBpZCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgYm9vbCBldmFsQiAodW5zaWduZWQgbG9uZyBpZCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgCiAgICBib29sIHRlc3QgKEV2YWxGdW4gZm5jdFRvRXZhbCkgY29uc3QKICAgIHsKICAgICAgICAvL2hpZXIgZGVyIFp1Z3JpZmYgYXVmIGRpZSDDvGJlcmdlYmVuZSBNZXRob2RlCiAgICAgICAgYm9vbCByZXMgPSAoKmZuY3RUb0V2YWwpICg0KTsKICAgICAgICByZXR1cm4gcmVzOwogICAgfQogICAgCnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBwYXJzZSgpID0gMDsKfTsKCi8vV1ZLbm90ZW4uaHBwCmNsYXNzIFdWS25vdGVuIDogcHVibGljIFdWT2JqZWN0CnsKCXB1YmxpYzoKCXZvaWQgcGFyc2UgKCkgeyBjb3V0IDw8IHRlc3QoJldWT2JqZWN0OjpldmFsQSk7IH0KfTsKCmludCBtYWluKCkgewoJV1ZLbm90ZW4gb2JqOwoJb2JqLnBhcnNlKCk7CglyZXR1cm4gMDsKfQ==