Здравствуйте, sergey2b, Вы писали:
S>У меня нет выбора S>Я вынужден использовать чужую с библиотеку S>Которая ожидает структуру с указателями на функции
А в чём тогда проблема? Просто передай то, что хочет библиотека
Здравствуйте, sergey2b, Вы писали:
S>Подскажите пожалуйста как можно передать указатель на метод класса в Си S>а потом вызывать этот метод из Си
Для вызова нестатической функции-члена (метода) класса необходимо иметь указатель на объект класса, для которого вызывается этот метод. Для этого библиотека должна поддерживать передачу кастомного указателя в процедуру обратного вызова. В таком случае задача решается тривиально — кастомный указатель преобразуется в указатель на объект нужного типа, для которого вызывается нужный метод. Без поддержки же со стороны библиотеки нормального решения нет, остаются извращения со статическими переменными с прилагающимся геморроем обеспечения потокобезопасности.
--
Не можешь достичь желаемого — пожелай достигнутого.
AD>Только вместо ((MyClass*)cookie) надо сделать православный reinterpret_cast ))
Здесь достаточно будет и static_cast. Результат один и тот же, но лучше все же вырабатывать привычку обходиться преобразованием минимальной силы. Тем более, что с reinterpret_cast не все так прямолинейно, как может показаться на первый взгляд: приведение через void* вместо использования reinterpret_cast.
--
Не можешь достичь желаемого — пожелай достигнутого.