LINUX.ORG.RU

Передача параметров в функцию С++

 , ,


0

2

Проблема заключается в следующем. Есть функция, вот её прототип.

void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);
есть так же класс
class Foo
{
    ..
    void ololo();
    ..
}
в его конструкторе я пытаюсь вызвать функцию attachInterrupt следующим образом
attachInterrupt(0, this->ololo, FALLING);
на что получаю ответ
error: cannot convert ‘Foo::ololo’ from type ‘void* (Foo::)()’ to type ‘void (*)()’
Понимаю, что вся проблема скорее всего в том, что надо правильно преобразовать типы, но не могу допереть как именно. Если вызывать attachInterrupt не из класса и не для члена класса, то всё работает. Подскажите пожалуйста, как правильно вызвать? Пните пожалуйста в нужном направлении, где я смогу раз и навсегда разобраться в этой теме.

★★★★

Последнее исправление: CYB3R (всего исправлений: 2)
Ответ на: комментарий от WRG

анон правду говорит: foo в main никакого отношения НЕ имеет к другому foo. Мало того, тебе ещё и НЕ передать будет одно через другое. Потому что внутри main ты передаёшь только указатель на leftOptoInterrupt.

emulek
()
Ответ на: комментарий от WRG

и вообще, не трахай мозг себе и окружающим: тебе нужно передать this, т.е. адрес ЭТИХ ДАННЫХ. Ты упрямо пытаешься передать адрес кода. Объект != код, объект == данные. И метод — прежде всего контекст, this. А сам код — всего лишь описание того, что надо С ЭТИМ делать.

emulek
()
Ответ на: комментарий от anonymous

я ошибся в псевдокоде, там foo - глобальный.

WRG ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.