Указатель на функцию - перевести из С в C++

Игорь18 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
08.11.2011

Был старый код, работает корректно (всё в глобальном пространстве):

// Старый код:

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); вызывалась глобальная функция, то сейчас должна вызываться функция данного класса. (Приведенный новый код не компилируется, его и нужно поправить).