Boost.Asio tutorial 중 하나는 타이머에서 비동기 대기를 생성자 내에서 호출합니다. 클래스 정의 내에서 'this'를 사용합니다.
Printer(boost::asio::io_service& io) : timer_(io, boost::posix_time::seconds(1)), count_(0) {
timer_.async_wait(boost::bind(&Printer::print, this));
}
print
print
함수가 인수를하지 않기 때문에
이가
print
기능에 바인딩 왜 (안조차 이해하지 못하는
void print()
{
if (count_ < 5)
{
std::cout << count_ << std::endl;
++count_;
timer_.expires_at(timer_.expires_at() + boost::posix_time::seconds(1));
timer_.async_wait(boost::bind(&printer::print, this));
}
}
에 의해 정의 된 멤버 함수입니다 오류 코드)
코드 샘플에서는 으로 정당화됩니다. 모든 비 정적 클래스 멤버 함수는이 매개 변수를 암시 적으로 갖기 때문에 이것을 함수에 바인딩해야합니다.
하지만 함수에 이을 결합 할 수있는 필요을 이해하지 않습니다.
은 누군가가 나이에 계몽 수 있습니까?
Q :'Printer'의 인스턴스가 없다면'count_'는 무엇을 의미합니까? – Mat
메서드가 인스턴스 메서드이고 인스턴스에 바인딩해야하기 때문입니다. – keith