Я пытаюсь сгенерировать периодический класс таймера, используя библиотеку boost.asio. Тем не менее, я получаю ошибки "недопустимое использование нестатической функции-члена". Файл cpp выглядит следующим образом:
#include "TimerBoost.h"
#include <iostream>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <chrono>
#include <string>
using namespace std;
boost::asio::io_context io;
TimerBoost::TimerBoost(int timerSec)
{
setParam(timerSec); //timerSec is the desired period of the timer in terms of second
boost::asio::steady_timer tim{io, std::chrono::seconds{tSec}};
tim.async_wait(boost::bind(print, &tim, &tSec));
io.run();
}
TimerBoost::TimerBoost()
{
setParam(5);
boost::asio::steady_timer tim{io, std::chrono::seconds{tSec}};
tim.async_wait(boost::bind(print, &tim, &tSec));
io.run();
}
void TimerBoost::setParam(int timerSec)
{
tSec=timerSec;
}
void TimerBoost::print(boost::asio::steady_timer* tim, int* tSec)
{
tim->expires_from_now(boost::asio::chrono::seconds(*tSec));
tim->async_wait(boost::bind(print, tim, tSec));
}
Файл заголовка имеет следующий вид:
#include <string>
#include <boost/asio/io_context.hpp>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <chrono>
#include <iostream>
#ifndef TIMERBOOST_H_
#define TIMERBOOST_H_
using namespace std;
class TimerBoost {
public:
TimerBoost(int tSec);
TimerBoost();
void setParam(int tSec);
void print(boost::asio::steady_timer* tim, int* tSec);
private:
int tSec;
};
#endif /* TIMERBOOST_H_ */
Когда я строю проект, я получаю 3 ошибки:
ошибка: недопустимое использование нестатической функции-члена
tim.async_wait (boost :: bind (print, & tim, & tSec));
ошибка: недопустимое использование нестатической функции-члена
tim.async_wait (boost :: bind (print, & tim, & tSec));
ошибка: недопустимое использование нестатической функции-члена
tim-> async_wait (boost :: bind (print, tim, tSec));
Знаете ли вы решение ошибок? Спасибо!