社区
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,不过好像也没用,没辙了,问一下熟悉这方面的人。
...全文
267
8
打赏
收藏
如何在 stl 算法中使用成员函数作为函数参数传递?
class A { void print(){} template void run( F func ) { func(); } int main() { run( print ); // error } } 我本来想用mem_fun,不过好像也没用,没辙了,问一下熟悉这方面的人。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 修饰的.
Effective C++
中
英文,mobi格式,适合kindle paperwhite
2. **尽量
使用
const**:在
函数
参数、
成员
函数
声明和对象定义
中
使用
const关键字,可以明确表达代码的不变性,有助于编译器进行优化,并减少错误的可能性。 3. **利用引用而非裸指针**:在大多数情况下,引用提供了一...
清华大学C++讲义与程序代码
2. **
函数
**:
函数
是C++
中
的可重用代码块,讲义可能会介绍
函数
的定义、调用、
参数传递
、返回值等。 3. **类与对象**:C++的核心是面向对象编程,讲义会详细解释类的定义、对象的创建、
成员
函数
、封装、继承和多态等...
STL
之仿
函数
实现详解
仿
函数
的主要功能是为了搭配
STL
算法
使用
,单独
使用
仿
函数
的情况比较少。 仿
函数
(functors)在C++标准
中
采用的名称是
函数
对象(function objects)。仿
函数
主要用于
STL
中
的
算法
中
,虽然
函数
指针虽然也可以作为
算法
...
【C++】
STL
算法
③ (
函数
对象
中
存储状态 |
函数
对象作为
参数传递
时值传递问题 | for_each
算法
的
函数
对象 参数是值传递 )
一、
函数
对象
中
存储状态 1、
函数
对象
中
存储状态简介 2、示例分析 二、
函数
对象作为
参数传递
时值传递...2、代码示例 - for_each
函数
的
函数
对象 参数在外部不保留状态 3、代码示例 - for_each
函数
的
函数
对象 返回值
C++: 非静态
成员
函数
作为匿名
函数
的参数
虽然非静态
成员
函数
不能直接作为匿名
函数
的参数,但你...它主要用于将
成员
函数
和对象绑定,使得
成员
函数
可以作为
参数传递
给标准库
算法
或其他需要
函数
对象的地方。对于静态
成员
函数
,不需要,直接
使用
成员
函数
指针即可。
C++ 语言
65,199
社区成员
250,520
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章