C クラスは自分自身をメンバーとして相互に含めることができますか?
C では、自分自身をメンバーとして含むクラスを定義したくなります。式ツリーのようなネストされた構造を表現します。ただし、このアプローチは許可されていません。
理由:
提供された回答に記載されているように、独自の型のメンバー変数を使用してクラスを定義すると、無限に大きな物体。各 Node には 2 つの Node オブジェクトが含まれ、さらに 2 つの Node オブジェクトが含まれるというように、無限に続きます。これにより、メモリ割り当てが現実的でなくなり、ランタイム エラーが発生します。
解決策:
この問題を解決するには、クラス型へのポインタをメンバ変数として使用する必要があります。クラス型自体の代わりに。これにより、無限再帰の問題を回避しながらネストの表現が可能になります。
次の修正された定義を考えてみましょう:
class Node { char *cargo; Node* left; // Pointer to a Node object Node* right; // Another pointer to a Node object };
ポインターを使用することで、実行せずにツリー状の構造を作成できます。自己言及問題に突入します。
以上がC クラスはそれ自体をメンバー変数として含めることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。