问题标签 [member-function-pointers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 语句完全被忽略(好像:被编译器忽略了?)
好吧,我又一次碰上了砖头。再次,我看不出错误的原因,也不知道如何使它起作用:
我有一个Human类的实例。Human类派生自Object .. Object类有一个名为“PerformStep”的虚拟函数。Human Class 重载了这个函数
。Human类也具有“WalkAction”功能。现在我想在 PerformStep - By member function pointer 期间调用这个“walkaction”。
我喜欢通过指针来做到这一点:
人类很愚蠢:他们知道如何走路,但不知道何时。所以在这个步骤中会问一个上帝实例:“我现在应该做什么” - 然后那个上帝实例返回指向正确成员函数的指针。
Human::WalkAction:
CALL_MEMBER_FN(宏):
CALL_MEMBER_FN(object,ptrToMember) ((object).*(ptrToMember))
问题是当我在调试模式下运行程序时,它完全忽略了函数指针所在的行。- 如果我逐语句运行它,它会“跳过”行,如果我在 walk 动作中设置断点,它永远不会到达断点。如果我在特定行上设置断点,断点会被推到下一个线。
这里发生了什么?
c++ - 在 C++ 中传递成员函数指针
我正在尝试将函数指针(类型为QScriptEngine::FunctionSignature
(= QScriptValue (QScriptContext *, QScriptEngine *)
))传递给另一个函数。但是我需要传递的函数是一个类的成员函数。
我这样使用它:
在这个例子中,我得到了错误:
error: no matching function for call to QScriptEngine::newFunction(<unresolved overloaded function type>)
note: candidates are: ...
如何将打印功能传递给 newFunction?
编辑:
我这样修复它:
c++ - “向上转换”方法指针并将其与基类指针一起使用是否安全?
假设我有一个指针类型,它可以保存基类方法的地址。我可以将子类方法的地址分配给它并期望它正常工作吗?在我的情况下,我将它与基类指针一起使用,对象的动态类型是派生类。
标准在谈到 static_cast 时这样说:
5.2.9.9“指向类型为 cv1 T 的 D 成员的指针”类型的右值可以转换为类型为“指向类型为 cv2 T 的 B 成员的指针”类型的右值,其中 B 是 D 的基类(第 10 条),如果存在从“指向 T 类型 B 成员的指针”到“指向 T 类型 D 成员的指针”的有效标准转换 (4.11),并且 cv2 与 cv1 具有相同的 cv 限定或大于 cv1 的 cv 限定。63)将空成员指针值(4.11)转换为目标类型的空成员指针值。如果类 B 包含原始成员,或者是包含原始成员的类的基类或派生类,则指向成员的结果指针指向原始成员。否则,强制转换的结果是未定义的。[注意:虽然 B 类不需要包含原始成员,取消引用指向成员的指针的对象的动态类型必须包含原始成员;见 5.5。]
与往常一样,我很难破译标准。它有点说没关系,但我不能 100% 确定上述文本是否真的适用于我的示例代码中的情况。
c++ - C ++中的函数指针定义不起作用
我无法解决此错误:代码:
我在 Visual Studio 2008 错误 C2470 中收到以下错误:callme 看起来像函数定义,但没有参数列表;跳过明显的身体`
编辑:我的想法:1.我想在类myClass 2中创建成员函数指针。在范围之外定义它。3. 将该函数指针作为参数传递给某个 Api 函数。
c++ - 如何将成员函数传递给函数指针?
如何将成员函数传递给函数指针,然后如何调用该函数指针?
c++ - 操作队列
我正在为配置文件处理创建一个类。我希望它的工作方式是:
有一个队列保留所有操作(插入数据,擦除数据......),然后,该方法Commit
将应用所有这些更改。
我的原型看起来像这样(文件上的所有设置都存储在 STL 映射中):
所以,我试图创建一个指向函数的 STL 队列,但是这些函数没有相同数量的参数,而且我不知道该怎么做......
c++ - 使用方法指针启动线程
我正在尝试开发一个线程抽象(POSIX 线程和来自 Windows API 的线程),我非常希望它能够使用方法指针而不是函数指针来启动它们。
我想做的是将线程抽象为具有纯虚拟方法“runThread”的类,它将被植入未来的线程类中。
我还不知道 Windows 线程,但要启动 POSIX 线程,您需要一个函数指针,而不是方法指针。而且我无法设法找到将方法与实例相关联的方法,以便它可以作为函数工作。我可能只是找不到关键字(而且我一直在搜索很多),我认为这几乎就是 Boost::Bind() 所做的,所以它必须存在。
你能帮助我吗 ?
c++ - mem_func 和虚函数
我有以下课程:
我收到以下编译错误:error: no matching function for call to \u2018mem_fun()\u2019
你知道为什么吗?
c++ - 获取函数 ptr 到实例类的成员函数?
我可以以某种方式将 g.resize 转换为 'void (*)(int, int)' 吗?
c++ - 从另一个方法调用地图上的方法
而这个 main()
但是当我运行它时p永远不会被打印出来。
我究竟做错了什么?
谢谢