最简单的“投射”方法是什么?指向 C++ 中函数指针的成员函数指针?

发布于 2024-09-10 17:11:13 字数 155 浏览 3 评论 0原文

我想为 STL 算法的“comp”参数提供一个成员函数,例如 lower_bound( ..., Compare comp )。 comp() 函数访问非静态成员字段,因此它本身必须是非静态成员,但非静态成员函数指针的类型与普通函数指针的类型不同。

解决这个问题的最佳方法是什么?

I want to provide a member function for the "comp" parameter of an STL algorithm like lower_bound( ..., Compare comp ). The comp() function accesses a non-static member field so it must itself be a non-static member but the type of a non-static member function pointer is different from that of an ordinary function pointer.

What is the best way around this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

昨迟人 2024-09-17 17:11:13

这是 std::mem_fun 和 std::mem_fun_ref 最常见的用法。它们是创建调用指定成员函数的函子的模板。 TR1 添加了一个 std::tr1::bind,它也很有用且更通用(如果您没有可用的 TR1,它基于 Boost::bind)。 C++0x 将在标准库中包含 std::bind(与 TR1 相比几乎没有变化)。

This is the most common use of std::mem_fun and std::mem_fun_ref. They're templates that create functors that invoke the specified member function. TR1 adds an std::tr1::bind that's also useful and more versatile (and if you don't have TR1 available, that's based on Boost::bind). C++0x will include std::bind in the standard library (virtually unchanged from TR1).

感受沵的脚步 2024-09-17 17:11:13

听起来您想要像 boost::bind 这样的东西,将成员函数指针绑定到该类的实例。

您愿意详细说明一下您想要做什么的问题吗?示例代码等?

It sounds like you want something like boost::bind, to bind the member function pointer to a instance of that class.

Would you care to elaborate your question a bit as to what you're trying to do? Example code, etc.?

公布 2024-09-17 17:11:13
#include<tr1/functional>

并使用 mem_fn()

#include<tr1/functional>

and use mem_fn()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文