以下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
定义成员函数模板?如果是,怎么样?
谢谢
- 利玛
答案 0 :(得分:1)
是否可以使用
boost::function
定义成员函数模板?如果是,怎么样?
我觉得你这里有点混乱。首先,函数模板是函数。您的test_fun
不是函数,它是类TestClass
的成员对象。成员对象无法在C ++中进行模板化。