相关疑难解决方法(0)

如何指定指向重载函数的指针?

我想将重载函数传递给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()我想要的?

c++ stl

128
推荐指数
6
解决办法
3万
查看次数

tr1 :: mem_fn和具有默认参数的成员

我有一个带有成员函数的类,它接受一个默认参数.

struct Class
{
    void member(int n = 0)
    {}
};
Run Code Online (Sandbox Code Playgroud)

通过std :: tr1 :: mem_fn,我可以调用它:

Class object;

std::tr1::mem_fn(&Class::member)(object,10);
Run Code Online (Sandbox Code Playgroud)

也就是说,如果我想用默认参数调用对象上的可调用成员,那么正确的语法是什么?

std::tr1::mem_fn(&Class::member)(object); // This does not work
Run Code Online (Sandbox Code Playgroud)

g ++抱怨以下错误:

test.cc:17: error: no match for call to ‘(std::tr1::_Mem_fn<void (Class::*)(int)>) (Class&)’
/usr/include/c++/4.3/tr1_impl/functional:551: note: candidates are: _Res std::tr1::_Mem_fn<_Res (_Class::*)(_ArgTypes ...)>::operator()(_Class&, _ArgTypes ...) const [with _Res = void, _Class = Class, _ArgTypes = int]
/usr/include/c++/4.3/tr1_impl/functional:556: note:                 _Res std::tr1::_Mem_fn<_Res (_Class::*)(_ArgTypes ...)>::operator()(_Class*, _ArgTypes ...) const [with _Res = void, _Class = Class, _ArgTypes …
Run Code Online (Sandbox Code Playgroud)

c++ tr1

4
推荐指数
1
解决办法
1748
查看次数

标签 统计

c++ ×2

stl ×1

tr1 ×1