C で OO スタイルのポリモーフィズムをシミュレートするにはどうすればいいですか? 質問する

C で OO スタイルのポリモーフィズムをシミュレートするにはどうすればいいですか? 質問する

プログラミング言語で OO のようなコードを書く方法はありますかC?


参照:

「[c] oo」で検索して見つかりました。

ベストアンサー1

最初の C++ コンパイラ (「クラス付き C」) は実際に C コードを生成するので、これは間違いなく実行可能です。

基本的に、基本クラスは構造体です。派生構造体には最初の位置に基本構造体が含まれている必要があります。これにより、「派生」構造体へのポインターも基本構造体への有効なポインターになります。

typedef struct {
   data member_x;
} base;

typedef struct {
   struct base;
   data member_y;
} derived;

void function_on_base(struct base * a); // here I can pass both pointers to derived and to base

void function_on_derived(struct derived * b); // here I must pass a pointer to the derived class

関数は関数ポインターとして構造体の一部にすることができるため、p->call(p) のような構文が可能になりますが、それでも構造体へのポインターを関数自体に明示的に渡す必要があります。

おすすめ記事