使用boost :: function的成员函数模板

时间:2014-01-11 06:13:31

标签: c++ templates boost boost-function

以下TestClass有效:

#include <iostream>
#include <boost/function.hpp>
#include <boost/bind.hpp>

void ext_fun(const float f, int i)
{
    std::cout << f << '\t' << i << std::endl;
}

template <typename T>
class TestClass
{
public:
    boost::function <void (const T)> test_fun;
};

int main()
{
    TestClass<float> tt;
    tt.test_fun = std::bind(ext_fun, std::placeholders::_1, 10);
    tt.test_fun(2.1);
    return(0);
}

但是,我更愿意将test_fun定义为成员函数模板,例如

class TestClass
{
public:
    template <typename T> boost::function <void (const T)> test_fun;
};

但是,如果我这样做,我得到这个编译器错误:“错误:数据成员'test_fun'不能是成员模板”

是否可以使用boost::function定义成员函数模板?如果是,怎么样?

谢谢

- 利玛

1 个答案:

答案 0 :(得分:1)

  

是否可以使用boost::function定义成员函数模板?如果是,怎么样?

我觉得你这里有点混乱。首先,函数模板是函数。您的test_fun不是函数,它是类TestClass的成员对象。成员对象无法在C ++中进行模板化。