我有一个如下的成员函数:
class XYZ{
public:
float function(float x);
private:
float m_DensityMin;
float m_DensityMax;
};
现在,我正在尝试使用
std::transform
STL算法通过传递成员函数function
来转换std::vector<float> foo
,并将结果存储在向量bar
中。如果我使用函数作为全局函数,并使用应表示类的随机数据,那么它可以正常工作。
然而,由于该函数需要使用类的成员变量
m_DensityMin
和m_DensityMax
,因此我需要将其用作成员函数。这是我尝试过的:std::transform(foo.begin(), foo.end(), bar.begin(), &XYZ::function);
但是在VS2010中我最终遇到了错误:
error C2065: term does not evaluate to a function taking 1 arguments
据我所知,我只传递了一个参数。有什么指针吗? 这里有一个类似的问题,我尝试使用std::mem_fun,因为std::mem_fn对我不可用,但是没有成功。
std::mem_fun
时出现了什么问题?您是否尝试使用lambda表达式? - dypmem_fun
返回的任何内容:std ::transform(foo.begin(),foo.end(),std ::back_inserter(bar),std ::bind1st(std ::mem_fun(&XYZ ::function),&xyz));
,演示 - Piotr Skotnickimem_fn
,请尝试使用std::tr1::mem_fn
。 - Praetorian