社区
C++ 语言
帖子详情
如何在 stl 算法中使用成员函数作为函数参数传递?
htqx
2006-12-23 08:49:56
class A
{ void print(){}
template<typename F>
void run( F func ) { func(); }
int main() { run( print ); // error
}
}
我本来想用mem_fun,不过好像也没用,没辙了,问一下熟悉这方面的人。
...全文
259
8
打赏
收藏
如何在 stl 算法中使用成员函数作为函数参数传递?
class A { void print(){} template void run( F func ) { func(); } int main() { run( print ); // error } } 我本来想用mem_fun,不过好像也没用,没辙了,问一下熟悉这方面的人。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taodm
2006-12-25
打赏
举报
回复
用mem_fun/mem_fun_ref,在<STL源码剖析>上有详细讲解
genius_hb
2006-12-24
打赏
举报
回复
标准的stl算法不能用非静态类成员函数,因为你没办法提供一个对象给它,它没有办法去调用成员函数,因为非静态的成员函数需要一个对象才能调用
htqx
2006-12-24
打赏
举报
回复
class A
{
public :
void print()
{
cout << "print" << endl;
}
template<typename F>
void run( F func ) { func(); }
template<typename C>
class mem_call_t
{
private:
typedef void (C::* F)();
F p;
public:
mem_call_t( F ptr )
: p( ptr )
{
}
void operator() () const
{
(((C*)0)->*p)();
}
};
template<typename C>
mem_call_t<C> mem_call( void (C::*ptr)() )
{
return mem_call_t<C>( ptr );
}
void main() {
run( mem_call( &A::print ) );
}
};
caocheng8230
2006-12-23
打赏
举报
回复
class A
{ void print(){}
template<typename F>
void run( F func ) { func(); }
int main() {
typedef (A::*print)();
A a;
print p;
run((a.p)()); // error
}
}
也行.
caocheng8230
2006-12-23
打赏
举报
回复
class A
{ static void print(){}
template<typename F>
void run( F func ) { func(); }
int main() { run( A::print ); // error
}
}
就可以了.
cunsh
2006-12-23
打赏
举报
回复
stl忘了. Loki的Functor可以在这儿用
A a;
a.run( Loki::Functor<void>( &a, &A::print) );
cunsh
2006-12-23
打赏
举报
回复
不static的也可以传递啊
femalelover
2006-12-23
打赏
举报
回复
成员函数要做为参数传递的话, 必须是 static 修饰的.
C++
STL
函数
应用
C++
STL
函数
算法
精讲+刷题实战,包括16个常用
STL
函数
,vector/stack/queue/deque/priority_queue、list/bitset/set/multiset/map/multimap等
函数
应用和刷题实战。
STL
之仿
函数
实现详解
仿
函数
的主要功能是为了搭配
STL
算法
使用
,单独
使用
仿
函数
的情况比较少。 仿
函数
(functors)在C++标准
中
采用的名称是
函数
对象(function objects)。仿
函数
主要用于
STL
中
的
算法
中
,虽然
函数
指针虽然也可以作为
算法
...
【C++】
STL
算法
③ (
函数
对象
中
存储状态 |
函数
对象作为
参数传递
时值传递问题 | for_each
算法
的
函数
对象 参数是值传递 )
一、
函数
对象
中
存储状态 1、
函数
对象
中
存储状态简介 2、示例分析 二、
函数
对象作为
参数传递
时值传递...2、代码示例 - for_each
函数
的
函数
对象 参数在外部不保留状态 3、代码示例 - for_each
函数
的
函数
对象 返回值
STL
函数
对象的
使用
STL
中
有大量的
算法
,这些
算法
是对SLT
中
的容器进行操作,
算法
需要
函数
对象作为参数因此
使用
STL
算法
的时候需要写
函数
对象。由于
STL
中
的
算法
和容器都是用模板设计出来的,因此我们在写
函数
对象时也需要
使用
模板。
函数
...
STL
的list
成员
函数
找了很久终于,找到一个觉得很好的博文总结出来的list成员。 文章比较长不过绝对慢慢干货。 下面是原文地址 本文以List容器为例子,介绍了
STL
的基本内容,从容器到迭代器,再到普通
函数
,而且例子丰富,通俗易懂...
C++ 语言
64,651
社区成员
250,488
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章