Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:从模板化方法构造std::函数_C++_Templates_C++11_Std_Std Function - Fatal编程技术网

C++ C++;:从模板化方法构造std::函数

C++ C++;:从模板化方法构造std::函数,c++,templates,c++11,std,std-function,C++,Templates,C++11,Std,Std Function,所以,我试着让它工作: #include <iostream> #include <functional> using namespace std; class X { public: template<typename T> void f(T t) { cout << t << endl; } }; int main() { X xx; xx.f(5); f

所以,我试着让它工作:

#include <iostream>
#include <functional>

using namespace std;

class X {
    public:
    template<typename T>
    void f(T t) {
        cout << t << endl;
    }
};

int main() {
    X xx;
    xx.f(5);
    function<void(int)> ff(&X::f);
    return 0;
}
(相当于对象方法的点模板)。任何帮助都将不胜感激

您需要:

function<void(X, int)> ff(&X::f<int>)
ff(xx, 5);
函数ff(&X::f) ff(xx,5); 因为您请求了一个非静态成员函数,这意味着您需要提供调用函数的实例,以
std::function
。例如:


如果您的成员
f
实际上不需要
X
来操作,您应该将其设置为“免费”非成员函数,而不是
X
的成员函数,您可以使用
std::bind
或lambda来匹配签名
函数。
function<void(X, int)> ff(&X::f<int>)
ff(xx, 5);