问题标签 [mem-fun]
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++ - C++ 强制 mem_fun 选择特定的重载成员函数
我实际上已经想出了如何按照我的问题的标题所暗示的去做,但不是以一种令人满意和便携的方式。让我更具体一点。
这是我的代码的精简和修改版本:
现在,我的问题是这段代码在带有 Microsoft Visual Studio C++ 2008 的 Windows 7 中编译并运行良好,但在带有 g++(版本 4.1.2 20080704)的 Red Hat linux 中却没有,我收到以下错误:
在 linux 中,如果我用以下代码替换mem_fun()
调用,它可以编译并正常工作:mem_fun( static_cast<int (A::*)() const>(&A::my_val) )
. 但是,我发现此解决方案在美学上不如第一个解决方案。有没有另一种便携的方式来做我想做的事?(也许有一种明显简单的方法可以做到这一点,我只是对此大惊小怪......)
先感谢您。-曼努埃尔
c++ - 为容器中的每个对象调用具有一个参数(绑定)的成员函数
我有一个
是和Coil
的基类CilCoil
,RectCoil
分别是圆柱形线圈和矩形线圈。现在我希望calcField
在每个Coil
指向 in上调用一个成员函数Coils
。该成员函数在基类中是纯虚函数,但已在派生类中实现,其声明如下所示:
是TVector3
来自 Root 库的 3D 矢量类。现在的想法是计算每个输入的字段Coil
并将Coils
它们加在一起。由于每次调用的参数calcField
(即计算字段的位置的向量)都是相同的,我想使用<algorithm>
or<numeric>
标头中的 STL 算法来做这样的事情(想象):
显然,既然我是来问一个问题的,这似乎不起作用。所以我的问题很简单:为什么这不起作用和/或你将如何以正确的方式去做(在 STL 的范围内)?
我在尝试编译上述文件时收到以下错误消息(我正在使用的文件称为 Interface.cpp,它是第三方代码):
c++ - mem_fn & bind 的一些实际用途
有人可以推荐 tr1 的 mem_fn 和绑定实用程序的一些很酷的实际用途吗?我不需要深奥的 C++ 来开发库。只是一些使用这些的应用程序级编码。
任何帮助将不胜感激。
c++ - 我可以将 boost::bind() 与 mem_fun_ref() 一起使用吗?
我的问题很简单:我可以做这样的事情吗?
假设类 foo 包含以下成员函数:
使用 foo:
那么这可能吗?问题几乎在于它是否boost::bind()
会影响它所处理的功能的成员/非成员性质。我认为我不能像这样反过来:
因为std::mem_fun_ref()
采用一元或零元函数并且DoSomething()
是二元的。
c++ - 如何分配子类的方法成员指针?
我的问题有点复杂。我有一个具有 Ports 对象的类(e:Component)。当一个组件创建一个端口对象时,它会将其方法之一传递给端口构造函数。
方法签名:
如果我这样做,它工作正常:
嗯...现在,我的问题是我创建了 Component 类的子类,但我不知道如何将 sublcasses 方法传递给 Port。
看起来很正常:我猜编译器需要精确的 Component (only) 方法。
--> 我正在寻找在端口中“动态”分配方法的解决方案(但我认为这是不可能的)
--> 也许另一个解决方案应该是使用模板?(定义“模板方法指针”而不是“组件方法指针”),但我不确定。
任何帮助,将不胜感激 :)
c++ - 使用 foreach 将多个 wxTextCtrls 的标签设置为空值
我一直在尝试使用 for_each 将 wxTextCtrl 的多个标签设置为空值,如下所示:
问题是它给了我这个错误:
你能解释一下我做错了什么吗?谢谢。
c++ - 与手动仿函数相比,std::mem_fn 的不足
我遇到了一个用例,std::mem_fn
它不能做手动包装函数可以做的事情。当包装函数用于不属于方法类但隐式可转换为它的类型时,就会出现这种情况:
调用 foo1 的编译器错误如下(使用 GCC 4.8):
是否有可能以std::mem_fn
这种用例的方式实现,就像使用手卷包装器一样工作?
c++ - 我怎样才能解决这个歧义wrt。mem_fun?
为了练习,我再次熟悉的主题之一是树。深度优先搜索和广度优先搜索的区别仅在于支持算法的数据结构的选择。
我想我可以编写一个通用的树搜索,我可以使用模板提供堆栈(DFS)或队列(BFS)。stack
并且queue
足够好,他们的添加和删除成员具有相同的名称。不幸的是,访问函数被调用一次,然后又被调用top
一次front
。正因为如此,我没有完全到达我想要的地方。没有那个 lambda,我无法做到:
我认为我应该能够使用mem_fun
(或mem_fun_ref
)来提供相应的访问功能。我试过
但随后编译器抱怨歧义(在 aconst
和非const
版本之间)。
所以我搜索了互联网并了解到我应该明确提供模板类型。
可悲的是,没有很多可能性???我可以想出满意的编译器。
有人可以给我一个提示吗?
更新:这是一个完整的工作示例(除非您定义 NO_LAMBDA):
c++ - 带有虚拟调用运算符的 std::transform 抛出“全局函数没有 'this' 指针”
PayOff 是一个抽象基类,CallPayOff 和 PutPayOff 派生自它。调用运算符在基类中定义为纯虚函数,CallPayOff 和 PutPayoff 提供了自己的实现。
呼叫操作员定义为:
任何人都可以看看吗?Boost/C++11 不是一个选项。
c++ - 为什么成员函数 mem_fun 调用必须是 const 的?
mem_fun
和mem_fun_ref
许多其他成员函数适配器可以使成员函数像普通函数一样工作。但是有一个限制,他们调用的成员函数必须是const的。我开始知道如何使用它们,但对其背后的原因感到困惑和困惑。为什么要这样设计?
更新:抱歉含糊不清。下面写一个例子。