Проблема заключается в следующем.
Есть функция, вот её прототип.
voidattachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode);
есть так же класс
classFoo
{
..
voidololo();
..
}
в его конструкторе я пытаюсь вызвать функцию attachInterrupt следующим образом
attachInterrupt(0, this->ololo, FALLING);
на что получаю ответ
error: cannot convert ‘Foo::ololo’ from type ‘void* (Foo::)()’ to type ‘void (*)()’
Понимаю, что вся проблема скорее всего в том, что надо правильно преобразовать типы, но не могу допереть как именно. Если вызывать attachInterrupt не из класса и не для члена класса, то всё работает. Подскажите пожалуйста, как правильно вызвать?
Пните пожалуйста в нужном направлении, где я смогу раз и навсегда разобраться в этой теме.
анон правду говорит: foo в main никакого отношения НЕ имеет к другому foo. Мало того, тебе ещё и НЕ передать будет одно через другое. Потому что внутри main ты передаёшь только указатель на leftOptoInterrupt.
и вообще, не трахай мозг себе и окружающим: тебе нужно передать this, т.е. адрес ЭТИХ ДАННЫХ. Ты упрямо пытаешься передать адрес кода. Объект != код, объект == данные. И метод — прежде всего контекст, this. А сам код — всего лишь описание того, что надо С ЭТИМ делать.