【发布时间】:2013-01-06 07:44:54
【问题描述】:
我想为特定实例的类方法创建一个函数。如示例所示,我想为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&’
【问题讨论】:
-
在 GCC 4.7.2 上都是 working fine。你用的是哪个编译器?
-
没有已知的参数 1 从“int”到“int&”的转换。哈哈,这太搞笑了!你的编译器(或编译过程)有问题!
-
感谢@chris!我在 gcc-4.7.1-glibc-2.14.1 上。我会用更新的 gcc 试试。
-
试试clang编译器,它可能会工作。
-
@woodings 更好的是,使用 C++11 而不是 TR1。新版本的 GCC 对 TR1 的支持可能会变得更糟,因为它已被取代。要将其转换为 TR1 程序,请将
-std=c++11传递给编译器并从源中删除tr1::的所有实例。