Как связать «это» с функцией класса в C ++ TR1?

Я хотел создать функцию для метода класса из определенного экземпляра. Как и в примере, я хотел бы создать функцию для 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&’

-1

Решение

Лучше всего перейти с TR1, который является неофициальным предложением 2006 года, на C ++ 11, который включил в себя большинство дословно TR1 (это означает, что программа TR1, вероятно, преобразована в C ++ 11, если вы просто удалите tr1::с).

Хотя интерфейсы в основном одинаковы, реализация TR1 является отдельной. Так что это в основном заморожено во времени, и новые особенности компилятора могут привести к его поломке. Или на других платформах они могли бы переименовать функции TR1 в «родной» C ++ 11, что означает, что tr1:: классы могут иметь отличия от фактической спецификации TR1.

На GCC, после удаления tr1::, Удалить tr1/ из заголовков и передачи -std=c++11 в командной строке.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]