Я хотел создать функцию для метода класса из определенного экземпляра. Как и в примере, я хотел бы создать функцию для 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, вероятно, преобразована в C ++ 11, если вы просто удалите tr1::
с).
Хотя интерфейсы в основном одинаковы, реализация TR1 является отдельной. Так что это в основном заморожено во времени, и новые особенности компилятора могут привести к его поломке. Или на других платформах они могли бы переименовать функции TR1 в «родной» C ++ 11, что означает, что tr1::
классы могут иметь отличия от фактической спецификации TR1.
На GCC, после удаления tr1::
, Удалить tr1/
из заголовков и передачи -std=c++11
в командной строке.
Других решений пока нет …