Я портирую какой-то старый проект C ++ на Linux (RHEL 5.3).
Ситуация следующая
#include <semaphore.h>
class OldClass: public sem_t
Раньше это работало, потому что до glibc-2.3.3.20040420 sem_t был структурой.
Теперь с более новой версией glib наследование union => не разрешено. поэтому компиляция не работает.
как это было:
typedef struct { struct
_pthread_fastlock __sem_lock;
int __sem_value;
_pthread_descr __sem_waiting; }
sem_t;
как это:
typedef union {
char __size[__SIZEOF_SEM_T];
long int __align; }
sem_t;
Как лучше всего это исправить? Как я могу "обернуть" функциональность sem_t?
Большое спасибо!
====== позднее редактировать ==========================================
OldClass «позже» используется другим классом (проект довольно большой): поэтому я ищу способ сохранить тот же интерфейс, чтобы избежать повторной записи всех вызовов в OldClass.
Я подумал, есть ли способ создать класс MySem_t, который обернут вокруг sem_t; тогда OldClass наследовал бы MySem_t ... это возможно?
Спасибо.