问题标签 [pointer-to-member]

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.

0 投票
1 回答
10330 浏览

c++ - 如何获取重载成员函数的地址?

我正在尝试获取指向特定版本的重载成员函数的指针。这是示例:

错误消息是“错误 C2440: 'initializing' : cannot convert from 'overloaded-function' to 'MemberFunctionType'”

如果f没有重载,则此方法有效,但在上面的示例中无效。有什么建议吗?

编辑

请注意,上面的代码并没有反映我的实际问题,即我忘记了一个“const”——这就是公认的答案所指出的。不过,我会保持原样,因为我认为这个问题可能发生在其他人身上。

0 投票
3 回答
1243 浏览

c++ - 访问模板基类函数指针类型

我有一个课程,我真的不想改变,但我确实想扩展。我是一个模式和模板新手,正在尝试将装饰器模式应用于模板类。模板类在另一个类中包含一个指向成员的指针(如果我正确理解语义的话)。指向成员的指针是 XML istream 的反序列化器。类型“T”是要反序列化的 XML 文档的类型。

};

在阅读http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.5后,typedef 对我来说看起来很奇怪,但是这个类似乎可以正常工作。提供的头文件中没有任何额外的#defines,所以这对我来说有点神秘。

现在我尝试将它扩展为装饰器,因为我想对 MYFUN 返回的 auto_ptr 对象做更多的工作:

在尝试编译它时,我在显示的两行中收到了语法投诉。错误类似于“* 处的预期')'。没有人抱怨 MYFUN 未定义。

当我使用与 D 中相同的签名重新定义 D 中的成员指针时,即

这行得通。我宁愿不必为 B 中的每个 D/Decorator 都执行此操作。我尝试更全局地执行 typedef,但由于模板参数未定义,无法正确获取语法。

0 投票
6 回答
5706 浏览

c++ - 重载的成员函数指针指向模板

我正在尝试通过这样的模板存储成员函数指针:(这是我真实代码的简化版本)

然后我想对 GApp 中的每个重载方法执行以下操作:

调用这个foo()是可以的,但我怎么能调用这个foo(double d)呢?为什么以下不起作用?

它会给我

语法错误:'double' 应该以 ')' 开头

我不明白这里必须使用的语法。这可能是一个愚蠢的问题,但是任何人都可以帮助我吗?

0 投票
2 回答
707 浏览

.net - C++/CLI 指向成员的指针

在 C++/CLI 中实现指向成员结构的各种选项有哪些?

我已经实现了一些 2D 几何算法,这些算法基于 X 和 Y 坐标执行一些操作。我发现我经常为 X 轴和 Y 轴重复一次代码。一个例子是找到沿每个轴的最大和最小界限。

如果我一直在使用本机 C++,我可以使用指向 X 或 Y 成员(还有宽度、高度等)的指针并将其作为参数传递,这样我只需要实现每个算法一次。但是对于 C++/CLI,这是不可能的。我有哪些选择?我正在寻找一些高效、轻量级和简洁的东西。

0 投票
7 回答
4242 浏览

c++ - C++中的回调,模板成员?

以下代码不起作用,但它很好地表达了我想要做的事情。模板结构容器存在问题,我认为应该可以工作,因为它的大小对于任何模板参数都是已知的。

有没有办法做这样的事情?我的意思是有一个非模板类回调,它包含任何指向方法的指针?

感谢 C++ 大师!

编辑:

请看这个:

C++中的回调,模板成员?(2)

0 投票
5 回答
2981 浏览

c++ - C++中的回调,模板成员?(2)

以下回调类是“可调用事物”的通用包装器。我真的很喜欢它的 API,它没有模板而且非常干净,但在底层有一些我无法避免的动态分配。

有没有什么办法可以去掉下面代码中的newdelete,同时保持回调类的语义和API?我真希望我能。


需要的东西:


回调类:


一个 API 示例:


非常感谢 !!:-)

0 投票
5 回答
29298 浏览

c++ - 在 void * 和指向成员函数的指针之间进行转换

我目前正在使用 GCC 4.4,并且我在转换void*和指向成员函数的指针之间非常头疼。我正在尝试编写一个易于使用的库,用于将 C++ 对象绑定到 Lua 解释器,如下所示:

我已经完成了大部分工作,除了以下函数(在我有机会概括它之前,它是特定于某个函数签名的):

对于那些不熟悉 Lua 的人,lua_touserdata(L, lua_upvalueindex(1))获取与闭包关联的第一个值(在本例中,它是指向成员函数的指针)并将其作为void*. GCC 抱怨void*->void (T::*)(int, int)是无效的演员表。关于如何解决这个问题的任何想法?

0 投票
4 回答
446 浏览

c++ - 在 C++ 中编写 structarray 映射函子的最清晰方法

这是一个关于最易读的方式做某事的民意调查——是使用指向成员的 C++ 指针、字节偏移量还是模板化仿函数来定义“从结构 foo 中选择成员 X”。

我有一个包含大量结构向量的类型,并且我正在编写一个实用函数,该函数基本上在其中一些范围内作为reduce操作。每个结构都将一组因变量与独立维度上的某个点相关联——为了发明一个简化的例子,想象这记录了一个房间随着时间的推移的一系列环境条件:

我的函数只是执行三次插值来猜测可用样本之间某个给定时间点的这些条件。

我想概括这个函数,以便它可以普遍应用于任何成员,而不仅仅是温度。我可以想到三种方法来做到这一点,虽然它们都可以直接编码,但我不确定一年后必须使用它的人最易读的方法是什么。这是我正在考虑的:


指向成员的语法

这感觉像是最“C++y”的方式,但它看起来很奇怪,而且整个指向成员的语法很少使用,因此我团队中的大多数人都很难理解。这是技术上“正确”的方式,但也是我会收到最困惑的电子邮件的方式。

结构偏移

这在功能上与上述相同,但显式地执行指针数学运算。这种方法对于我团队中的每个人(他们都在 C++ 之前学习 C)都会立即熟悉和理解,而且它很健壮,但看起来很恶心。

模板化函子

这是最直接和 STL 式的做事方式,但它看起来像是一大堆额外的类型和语法以及临时的类定义。它编译成与上面两个几乎完全相同的东西,但它还在整个可执行文件中转储了一堆冗余函数定义。(我已经用/FAcs验证了这一点,但也许链接器会再次将它们取出。)


以上三个都可以工作,编译器为它们发出几乎相同的代码;所以,我必须做出的最重要的选择就是最易读的。你怎么看?

0 投票
3 回答
579 浏览

c++ - 我无法访问指向成员的指针。为什么?

考虑以下代码:

为什么编译器会产生错误?(VS2008)


新的

我已将此错误发布到connect.microsoft.com

0 投票
4 回答
1522 浏览

c++ - 如何在编译时保存指向成员的指针?

考虑以下代码

看,如果此参数是类型名或整数值,则可以保存任何模板参数。问题是指向成员的指针是一个偏移量,即整数。现在我想在编译时保存任何指向成员的指针:

如何在编译时保存指向成员的指针?我用的是VS2008。

笔记。编译时间很关键。请不要编写运行时解决方案。我知道。