如何指定指向重载函数的指针?我想将重载的函数传递给std::for_each()算法。例如,class A {
void f(char c);
void f(int i);
void scan(const std::string& s) {
std::for_each(s.begin(), s.end(), f);
}};我希望编译器能够解析f()迭代器类型。显然,它(GCC 4.1.2)没有做到这一点。那么,我如何指定f()我想要?
3 回答
互换的青春
TA贡献1797条经验 获得超6个赞
你可以用static_cast<>()指定哪个f根据函数指针类型所隐含的函数签名使用:
// Uses the void f(char c); overload
std::for_each(s.begin(), s.end(), static_cast<void (*)(char)>(&f));
// Uses the void f(int i); overload
std::for_each(s.begin(), s.end(), static_cast<void (*)(int)>(&f));
或者,你也可以这样做:
// The compiler will figure out which f to use according to
// the function pointer declaration.
void (*fpc)(char) = &f;
std::for_each(s.begin(), s.end(), fpc); // Uses the void f(char c); overload
void (*fpi)(int) = &f;
std::for_each(s.begin(), s.end(), fpi); // Uses the void f(int i); overload
f
mem_fun
- 3 回答
- 0 关注
- 560 浏览
添加回答
举报
0/150
提交
取消