社区
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,不过好像也没用,没辙了,问一下熟悉这方面的人。
...全文
288
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
容器作为
函数
参数
本文介绍了
STL
容器的强大功能,以vector为例,阐述了其作为
参数传递
的两种方式——值传递和引用传递,从书写、内部实现和适用范围角度分析了二者区别。还提到
STL
容器自带拷贝构造
函数
进行深拷贝,以及
使用
容器或string作参数时两种传递方式的差异。
C++与
STL
笔记
本文概述了EffectiveC++
中
的关键概念,如const
成员
函数
的
使用
、构造
函数
优化、智能指针的正确操作、值与引用传递、避免遮掩继承名称、虚拟
函数
参数与效率、
STL
容器的最佳实践以及排序策略。这些技巧旨在提高代码效率和可维护性。
C++
中
STL
算法
使用
错误的解决策略
本文结合CSDN实战经验,分析C++
中
STL
算法
常见错误及解决方案。涵盖迭代器失效、
参数传递
错误、性能陷阱、异常安全与资源管理等问题,还介绍调试工具与技巧,最后总结最佳实践,助开发者降低
使用
风险,提升代码质量。
突破
STL
的多态壁垒:将多态
函数
对象传递给
算法
本文聚焦 C++
中
面向对象编程与
STL
的碰撞,探讨如何将多态
函数
对象传递给
STL
算法
。介绍了多态
函数
对象概念,指出按值传递会导致对象切割、多态行为丢失。提出
使用
lambda 表达式和 std::ref 两种解决方案,对比后认为 std::ref 更简洁高效。
STL
之容器作为形参的传递
本文详细解析了C++
STL
容器作为
函数
参数时的值传递和引用传递方式,包括它们的内部实现机制、适用场景及优缺点。通过具体示例说明了如何选择合适的传递方式。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章