tmytのらくがき

個人の日記レベルです

tr1をほげほげ

先輩にstd::tr1::functionとstd::tr1::bindの使い方を教えてもらったのでめもめも。

#include <functional>
#include <iostream>
class classA
{
public:
    int neg(int n)
    {
        return -n;
    }
};

class classB
{
private:
    std::tr1::function<int(int)> m_func;

public:
    void set(classA* a)
    {
        m_func = std::tr1::bind(&classA::neg, a, std::tr1::placeholders::_1);
    }
    int call(int n)
    {
        if (m_func)
            return m_func(n);
        else
            return n;
    }
};

void main()
{
    classA a;
    classB b;
    b.set(&a);
    std::cout << b.call(100) << std::endl;
}