如何调用成员函数C ++的指针[重复]
Posted
技术标签:
【中文标题】如何调用成员函数C ++的指针[重复]【英文标题】:How to call a pointer of member function C++ [duplicate] 【发布时间】:2014-09-25 07:37:54 【问题描述】:我从这段代码的 xcode 中得到 Expected unqualified-id。 我正在使用 cocos2d-x 3.x 但它与这个问题无关。
在 CCNode.h 中
virtual float getGlobalZOrder() const return _globalZOrder;
在我的 cpp 中
typedef float (Node::*SomeFunc)() const;
SomeFunc f = &Node::getGlobalZOrder;
Node * node = .....;
node->(*f)(); <-Expected unqualified-id
为什么会出现编译错误?
【问题讨论】:
【参考方案1】:.*
和->*
等指向成员的解引用运算符是一个整数运算符,不能用()
分隔它们。你可以试试这个:
(node->*f)();
【讨论】:
天哪,您的代码有效!我试过 (node->(*f))();它给出了错误......为什么它在 ->.. 之后不喜欢 () @h5nc 因为->*
是 C++ 中的一个实际的完整运算符,并且通过使用 pars 将其拆分,您将含义从“通过指针调用成员函数”更改为没有意义的东西.【参考方案2】:
使用如下:
typedef float (Node::*SomeFunc)() const;
SomeFunc f = &Node::getGlobalZOrder;
Node * node = new Node();
float x = (node->*f)();
【讨论】:
以上是关于如何调用成员函数C ++的指针[重复]的主要内容,如果未能解决你的问题,请参考以下文章