Указатель на функцию - перевести из С в C++
Был старый код, работает корректно (всё в глобальном пространстве):
// Старый код:
typedef struct reader_s
{
void * data;
ssize_t (*read)();
} reader_t;
ssize_t read_cb(reader_t * fd)
{
return fd->read(fd->data);
}
// Другие функции
// ...........................
Требуется этот код переписать с использованием классов, т.е. должно быть что-то вроде того:
// Новый код:
class MyClass
{
public:
typedef struct reader_s
{
void * data;
ssize_t (MyClass::*read)();
} reader_t;
ssize_t read_cb(reader_t * fd);
// Другие функции
// ..........................
};
ssize_t MyClass::read_cb(reader_t * fd)
{
return fd->MyClass::read(fd->data);
}
// Другие функции
// ..........................
Т.е. если раньше в fd->read(fd->data); вызывалась глобальная функция, то сейчас должна вызываться функция данного класса. (Приведенный новый код не компилируется, его и нужно поправить).