如何将'this'绑定到 C++ TR1 中的类函数?

How to bind 'this' to a class function in C++ TR1?

本文关键字:TR1 C++ 类函数 绑定 this      更新时间:2023-10-16

我想从一个特定实例为一个类方法创建一个函数。在示例中,我想为this->x创建一个函数。

class A {
 public:
  void x(int p) { }
  void y() {
    function<void(int)> f = std::tr1::bind(
      &A::x,
      this,
      std::tr1::placeholders::_1);
  }
};

当我试图编译这个时,我得到了很长的错误消息。其中一个比较有意义的是note: no known conversion for argument 1 from ‘int’ to ‘int&’

最好从TR1(这是2006年的非正式提案)迁移到c++ 11,后者逐字合并了TR1的大部分内容(这意味着如果您只是删除tr1::, TR1程序可能会转换为c++ 11)。

虽然接口基本相同,但TR1的实现是分开的。所以它基本上被冻结在时间里,新的编译器的怪癖可能会导致它崩溃。或者在其他平台上,他们可能将TR1特性别名转发到"本地"c++ 11,这意味着tr1::类可能与实际的TR1规范有所不同。

在GCC上,删除tr1::后,从头文件中删除tr1/,并在命令行中传递-std=c++11