古い C++ プロジェクトを Linux (RHEL 5.3) に移植しています。
状況は次のとおりです
#include <semaphore.h>
class OldClass: public sem_t
glibc-2.3.3.20040420 まで sem_t が構造体だったため、これは機能していました。現在、新しいバージョンの glib では、共用体 => 継承は許可されていません。したがって、コンパイルは機能しません。
いかがでしたか:
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 へのすべての呼び出しを書き直すのを避けることができます。
sem_t;OldClass をラップするクラス MySem_t を作成して MySem_t を継承する方法があるかどうかを考えていました...これは実現可能ですか?
ありがとうございました。