0

何が起こるか正確にはわかりませんが、次のようにします。

class A{

}

-

class B{
 #include "A.h"
}

-

class C{
 #include "B.h"
}

クラスCでコーディングすると、クラスAも自動的に含まれることになりますか? 私が理解していることから、 #include は基本的にファイル全体をその場でコピーするということです。

誰でもこれについて詳しく説明できますか?

クラス転送をできる限り使用しようとしています。しかし、時々私は単にできないことがあります。

編集:

上記のクラスは同じファイルにありません。それらが分離されていると想像してください。

編集 II: もっと文脈に入れましょう。

クラス B を含む新しいクラスを作成しているとしますが、その後、型 A の変数を宣言します。クラスに A を含めたことがないにもかかわらず、これはコンパイルされるようです。これはC ++でのやり方ですか?

4

3 に答える 3

2

これは基本的に、クラス内でAと呼ばれるネストされたクラスを宣言しBます。

ディレクティブがincludeファイルの先頭以外の場所にある必要がある場合は非常にまれであり、通常、目的は完全に異なります。

ファイル階層を正しく理解していれば、次のようになります。

//A.h
class A{

};

//B.h
class B{
  class A{

  };
};

//C.h
class C{
  class B{
    class A{

    };
  };
};
于 2012-08-13T17:52:32.397 に答える
1

そうです、プリプロセッサはヘッダーをコピーするだけです。必要に応じて、長いマクロのように考えてください。

于 2012-08-13T17:52:57.767 に答える
1

ディレクティブは、指定されたファイル内のテキストがディレクティブが発生#includeした場所に書き込まれたと見なすようにコンパイラに指示するだけです。#includeスコープ、構文、またはその他とは何の関係もありません。単なるテキストです。

#includeAh と Bh の内容を見ないと、これらのディレクティブの影響についてこれ以上何も言えません。

于 2012-08-13T17:57:04.210 に答える