gpt4 book ai didi

C++:从模板化方法构造 std::function

转载 作者:行者123 更新时间:2023-11-30 02:42:40 26 4
gpt4 key购买 nike

所以,我试图让它工作:

#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;
}

编译器提示 X::f<unresolved overloaded function type> ,这是有道理的。现在,我的问题是:如何告诉编译器使用哪些模板参数?我基本上想要类似的东西

&X::template<int> f

(相当于对象方法的点模板)。任何帮助将非常感激。

最佳答案

你需要:

function<void(X, int)> ff(&X::f<int>)
ff(xx, 5);

因为您要求非静态成员函数,这意味着您需要向 std::function 提供调用该函数的实例。例如:http://ideone.com/dYadxQ

如果你的成员 f 实际上不需要 X 来操作,你应该使它成为一个“免费”的非成员函数而不是 的成员函数X.

关于C++:从模板化方法构造 std::function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26854866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com