0
我知道這已被多次詢問,大部分答案都很難理解。 你能幫我弄清楚我做錯了什麼嗎?C++指針使用std :: function成員函數
#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
#include <functional>
class A{
public:
A(double i){
_b = i;
}
double square(double i){
return i*i*_b;
}
private:
double _i;
double _b;
};
double cube(double (*objfunc)(double), double x){
return objfunc(x)*x;
}
int main()
{
double v = 2.0;
A a(v);
using std::placeholders::_1;
std::function<double(double)> f_square = std::bind(&A::square, &a, _1);
double x = cube(f_square,3.0);
std::cout << " x = " << x << std::endl;
}
非常感謝您的建議。
鑑於類A和立方函數,因爲它們是如何在主函數中使用立方函數?
更新:只有這樣,才能做到這一點是修改:
double cube(std::function<double(double)> objfunc, double x){
return objfunc(x)*x;
}
您正在嘗試傳遞'std :: function'實例,其中需要一個普通函數指針。前者不能轉換爲後者。 –
你能幫我修改主要功能嗎?什麼是使用函數正方形的正確方法? – user1453817
我覺得不能做成員函數指針不是簡單的指針。但我的理解非常有限。因此,讓我們等待專家進來。 – user1453817