Passando um ponteiro de função de membro C ++ para um algoritmo STL
Eu tenho uma função de membro da seguinte maneira:
class XYZ{
public:
float function(float x);
private:
float m_DensityMin;
float m_DensityMax;
};
Agora, estou tentando transformar umstd::vector<float> foo
usando ostd::transform
Algoritmo STL passando a função de membrofunction
e armazenando os valores resultantes em um vetorbar
.
Se eu usar a função como uma função global, com dados aleatórios que devem denotar as variáveis de membro da classe, ela funcionará bem.
No entanto, como a função requer o uso de variáveis-membrom_DensityMin
em_DensityMax
da classe, preciso usá-lo como uma função de membro. Isto é o que eu tentei:
std::transform(foo.begin(), foo.end(), bar.begin(), &XYZ::function);
mas acabo com o erro no VS2010:
error C2065: term does not evaluate to a function taking 1 arguments
Até onde eu sei, estou passando apenas 1 argumento. Alguma dica? Aqui está um semelhantePergunta, questão, Tentei com std :: mem_fun, pois std :: mem_fn não está disponível para mim, mas sem sucesso.