如何将参数绑定到构造函数?

How do I bind arguments to a constructor?

本文关键字:构造函数 绑定 参数      更新时间:2023-10-16

如上所述,我想使用std::bind创建一个函数,该函数在调用时返回使用构造函数构建的对象,该构造函数具有如下默认参数:

#include <functional>
class X
{
int x_, y_;
public:
X(int x, int y): x_(x), y_(y)
{
}
};
int main() {
auto fun = std::bind(&X::X, 1, 2);
X x = fun();   
}

相反,我收到以下编译器错误:

错误:在此上下文中,对"X"的限定引用是构造函数名称而不是类型

错误:函数样式强制转换或类型构造的预期"(" 参考这一行:

auto fun = std::bind(&X::X, 1, 2);

注释回答了这个问题。显然,std::bind不能与构造函数和析构函数一起使用,因为它们不能获取其地址。感谢Eugene,The Philomath和molbdnilo。