0

1 つの .h ファイルに 2 つの別個のクラスを含めることについて知っておくべきことは何ですか?

すべてのメンバーとパブリックおよびプライベート関数を備えた二分探索ツリー クラスがあります。

class BinarySearchTree
{
   struct Node {
      Node* left;
      Node* right;
      int val;
   };
};

そのコードに従って、その二分探索木ノードへのポインターのスタックを設計したいと考えています。私が持っている同じ.hファイル内

class stack
{
  Node* array;
  //

};

Visual Studio はリンケージを表示せず、認識しませんNode*。1 つの .h ファイルで 2 つの別個のクラスを宣言しても問題ありませんか、それとも二分探索ツリー クラス内にネストされたスタック クラスを実装する方がよいでしょうか?

4

1 に答える 1

1

class にネストされたstructcalledを宣言したので、クラスの外部でそれを参照したい場合は、次のように参照する必要があります。NodeBinarySearchTreestruct

class stack
{
  BinarySearchTree::Node* array;
  //

};

それが優れた設計であるかどうかはまったく新しい問題なので、さらに質問する前に実装をもう少し進めることをお勧めします。

編集

お気づきのようpublicに、クラスの外で使用する場合は、ネストされた構造体を作成する必要があります。それ自体は、必ずしも悪いことでも悪いことでもありません。データを公開するのではなく、宣言するだけです。

次の 2 つの選択肢があります。

  1. ネストされた構造体をパブリックにします。
  2. 入れ子になった構造体を囲んでいるクラスの外に持っていきます。

個人的には、最初のオプションを選びます。

于 2013-04-27T10:00:54.627 に答える