问题标签 [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.
lambda - 用于传递成员函数的 C++0x lambda 包装器与绑定
这基本上是一个关于在类构造函数/方法中创建/传递指向成员方法的函子的两种不同方法的可读性、样式和性能的问题。
方法一:
方法二:
我想知道在这种情况下使用 lambda 是否只是无偿的,在某些方面更容易看到发生了什么,但是你必须显式地提供 arg 类型。我也不喜欢“使用命名空间”;但随后它使绑定表达式不必要地冗长(例如,_1 变为 std::placeholders::_1),并且 lambda 避免了这个问题。
最后我应该注意,就这个问题而言, some_method 是一个可以做很多事情的大函数,直接复制到 lambda 体中会很痛苦。
如果这个问题看起来太模糊,那么我们可以专注于性能差异的答案(如果有的话)。
编辑:一个不平凡的用例。
如您所见,初始化器列表(使用方法 1 或 2 定义)中使用的 CALLBACK_FUNCTOR 使得限定 using 声明(afaik)的范围很困难,显然我们不会费心包装我们打算立即调用的成员方法。
c++ - 具有私有基数的函数成员指针
以下代码产生编译时错误:
“
base::print
” : 无法访问在类“base_der
”中声明的私有成员
但是,我已经public
在派生类中创建了成员。为什么这不起作用?
c++ - const-正确性和安全的布尔成语
我有另一个与安全布尔成语有关的问题:
bool_type
(typedef)和this_type_does_not_support_comparisons
是怎么来的const
?无论如何,没有人应该通过返回指针实际调用成员函数,对吧?这里有const
必要吗?operator bool_type
否则(成员函数)会违反 const 正确性吗?
c++ - C++ 对象函数到函数指针
我在我的 C++ 应用程序中使用了一个 C 库。该库具有具有以下签名的函数:
我正在尝试将函数设置为回调,我希望能够使用以下类成员函数
我不能直接绑定它并基于这里http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.2我有一个可能的解决方案,我会创建一个静态成员来处理回调(因为基于该站点,应该没问题)并添加此类的静态实例以供静态成员调用。
即在BattleScreen中添加以下内容:
像这样在构造函数中绑定它:
并将对象分配给构造函数中的回调目标。
问题是我无法知道我在任何时候都会有多少这样的课程(它会是最小的,但可能大于 1)。我考虑让 callbacktarget 成为 BattleScreen* 的向量,我可以在 TopLevelHandleWebViewCallbacks 中迭代并像这样进行比较:
但这里的问题是我只是在比较 awe_webview 指针,这似乎是一个非常糟糕的主意。该库是封闭源代码,awe_webview 是 C 结构,所以我看不出它们是由什么组成的,以及是否有任何属性可以进行更合适的比较。有没有好的解决方案?
如果我不清楚或者您需要更多信息,请告诉我。
提前致谢
c++ - C++:使用带有成员函数的函数指针
我试图将一个函数作为参数传递给另一个函数,它们恰好是同一个类的成员函数。
我遇到了一个奇怪的错误,我无法弄清楚问题是什么。
这是我的功能:
但是,我收到以下错误:
那么给了什么?我觉得我已经尝试了每一种变化来试图让它发挥作用。你甚至可以为成员函数传递函数指针吗?我怎样才能让它工作?
注意:将 functionToPass 设为静态并不是真正有效的选项。
c++ - C++ 成员函数指针,boost::signals
我有以下情况,(代码更好)
所以问题是,我如何将“成员函数”指针传递给 Register 方法。还有,这样可以吗?我想要/需要的是某种代表注册系统,所以如果有人能指出我正确的方向,我将不胜感激。提前谢谢。
c++ - 事件回调守护进程
我正在使用 C++ 中的一个事件守护程序,我想使用成员函数回调。基本上,事件队列将收集守护程序持续服务的事件。有一个带有 ID 的基类 Event 结构,所有事件都将从它派生。我希望为每个事件注册的方法在其签名中使用派生事件类型。
然后守护进程将允许这些类使用它们的“this”指针订阅它们的成员函数。
所以在这门课之外你可以做类似的事情:
并且 EventDaemon 循环将沿着
所以我的问题是如何按事件 ID 将“this”指针和成员函数指针存储在某种数组中。这样我就可以通过使用 e->eventId 和事件类型来查找 'classInstancePtr' 和 'funcPtr' 以及 reinterpret cast。
c++ - 指向不可访问基中的成员函数的指针
下一个例子的编译:
失败并出现下一个错误:
我知道 A 不是 B 的可访问基础,但我正在使用using
关键字。它不应该允许访问函数 foo 吗?
标准中的哪些相关段落阻止了上述内容的编译?
c++ - 使用 libevent 回调成员函数
我正在尝试将一个成员函数传递给应该被视为回调的libevent 。
我可以成功地在 A 类中创建一个指向eventcb的方法指针,并在 A 的实例上调用它(第 20 行)。
此外,在第 22 行传递一个全局函数(就像在 C 中所做的那样)也可以正常工作。
但是,在第 23 行,我尝试将我的方法指针传递给libevent,当我编译它时,我收到以下错误(使用clang编译器)
我究竟做错了什么?