我有一個成員函數如下:傳遞一個C++成員函數指針到STL算法
class XYZ{
public:
float function(float x);
private:
float m_DensityMin;
float m_DensityMax;
};
現在,我試圖用std::transform
STL算法來變換std::vector<float> foo
通過將成員函數function
,並將結果值存儲在向量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
至於我可以告訴我傳球只有1個說法。任何指針? 這裏有一個類似的question,我試過用std :: mem_fun,因爲std :: mem_fn對我沒有用,但無濟於事。
*「我已經嘗試使用std :: mem_fun,因爲std :: mem_fn不適用於我,但無濟於事。「*使用'std :: mem_fun'時出現了什麼問題?你有沒有嘗試過使用lambda? – dyp
除非它是一個靜態函數,否則你需要一個參數對象,並將它綁定到任何'mem_fun'返回:'std :: transform(foo.begin(),foo.end(),std :: back_inserter(bar),std :: bind1st(std :: mem_fun(&XYZ :: function),&xyz));',[demo](http://coliru.stacked-crooked.com/a/1733c6da8b46abee) –
'function'應該可能是一個靜態成員函數。 – 0x499602D2