Как передать функцию в метод?

121
09 февраля 2021, 00:10

У меня есть такая функция

void VideoRender::timer_start(std::function<void(void)> func, unsigned int interval) {
    std::thread([func, interval]() {
        while (true) {
            auto x = std::chrono::steady_clock::now() + std::chrono::milliseconds(interval);
            func();
            std::this_thread::sleep_until(x);
        }
    }).detach();
}

Есть вот такой метод который я передаю в эту функцию

void VideoRender::loadNewData() {
    __android_log_print(ANDROID_LOG_ERROR, "TRACKERS", "LoadPLY3 ::: %s", "HERE");
}

И вот так я это все вызываю

timer_start(loadNewData, 1000);

Получаю вот такую ошибку при компиляции

25: error: reference to non-static member function must be called; did you mean to call it with no arguments?

Что делаю не так?

Answer 1

Нарисуйте статическую функцию и отдайте её.

class VideoRender{
..
static void st_loadNewData(VideoRender & me){me.loadNewData();}
..
};
timer_start(VideoRender::st_loadNewData, 1000);
READ ALSO
Вывод координат возле курсора

Вывод координат возле курсора

Пытаюсь выводить координаты XY возле курсора мышиС самим просчетом координат все норм, но вот с расположение текста проблема

95
Как упаковать проект в один exe-файл?

Как упаковать проект в один exe-файл?

У меня есть проект в Visual Studio, в котором я подключаю библиотеки OpenGLСтолкнулся с необходимостью запаковать его вместе со всеми текстурами и библиотеками...

109
Неправильно подключается jQuery через Webpack

Неправильно подключается jQuery через Webpack

В одном из своих модулей импортировал jQuery:

145
Позиционирование блоков div

Позиционирование блоков div

Есть таблица из блоковСтроки добавляются как надо, но при попытке добавить ещё один блок, нижняя строка не смещается, а находит на блок

130