我想将重载函数传递给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);
}
};
Run Code Online (Sandbox Code Playgroud)
我期望编译器f()通过迭代器类型来解析.显然,它(GCC 4.1.2)没有这样做.那么,我该如何指定f()我想要的?
可能重复:
如何指定指向重载函数的指针?
我有一个库,其类定义为:
struct ClassA
{
static ClassA foo(long);
static ClassA foo(double);
}
Run Code Online (Sandbox Code Playgroud)
我需要获取这两个函数的地址.我正在尝试的代码给出错误C2440:无法从'overloaded-function'转换为'...'
ns::ClassA (ns::ClassA::*ClassA_foo1)(long) = &ns::ClassA::foo;
ns::ClassA (ns::ClassA::*ClassA_foo2)(double) = &ns::ClassA::foo;
Run Code Online (Sandbox Code Playgroud)
我认为它们可能是静态的,但在返回类型之前或之后放置静态会产生相同的错误.