cco*_*r83 5 c++ stl member-functions stl-algorithm
我有一个成员函数如下:
class XYZ{
public:
float function(float x);
private:
float m_DensityMin;
float m_DensityMax;
};
Run Code Online (Sandbox Code Playgroud)
现在,我试图通过传递成员函数并将结果值存储在向量中std::vector<float> foo来使用std::transformSTL算法转换a .functionbar
如果我将函数用作全局函数,使用应该表示类的成员变量的随机数据,它可以正常工作.
但是,由于函数需要使用成员变量m_DensityMin和m_DensityMax类,我需要将它用作成员函数.这就是我尝试过的:
std::transform(foo.begin(), foo.end(), bar.begin(), &XYZ::function);
Run Code Online (Sandbox Code Playgroud)
但我最终得到VS2010中的错误:
error C2065: term does not evaluate to a function taking 1 arguments
Run Code Online (Sandbox Code Playgroud)
据我所知,我只传了一个论点.有什么指针吗?这是一个类似的问题,我尝试过使用std :: mem_fun,因为std :: mem_fn对我来说无法使用,但无济于事.
std::mem_fun它本身只为成员函数提供了一个包装器,因此将在传递给它的第一个参数的上下文中调用一个operator().话虽如此,您需要绑定适当的实例,XYZ然后将函数对象传递给std::transform算法:
XYZ xyz;
std::transform(foo.begin(), foo.end(),
std::back_inserter(bar),
std::bind1st(std::mem_fun(&XYZ::function), &xyz));
// ~~~~~~^ ~~~~~~^ ~~~^
Run Code Online (Sandbox Code Playgroud)