別のクラスをインクルードするときは、必ず #include "headername.h" を記述する必要があります。他のクラスを記述したり、「#include」で複数のクラスを含めたりせずにアクセスすることは可能ですか?
2 に答える
ディレクティブが行うことは、#include
まさにその名前が示すとおりで、必要なファイルの内容を文字通りソースに含めます。これは、実際のコンパイラがソースを取得する前の、コンパイル プロセスの早い段階で行われます。すべてのヘッダー ファイルを含むソースは翻訳単位と呼ばれ、コンパイラが作業するのはこの翻訳単位です。
ヘッダー ファイルが必要な理由については、C++ を使用する前にすべてを宣言または定義する必要があることを思い出してください。という名前のクラスがあることをコンパイラが認識しない場合、Foo
type の変数を宣言することはできませんFoo
。#include
そこにヘッダーファイルが定義されていない場合Foo
、コンパイラーはそのようなクラスがあることを単に認識しません。
多くのソース ファイルに多くのヘッダーをインクルードしなければならなくなった場合は、他のヘッダー ファイルをインクルードすることのみを目的として、共通のヘッダーを別のヘッダー ファイルに入れることができます。たとえば、多くのソース ファイルに<string>
、<vector>
およびが含まれている場合は、「含む<iostream>
」という名前のファイルを作成します。headers.h
#ifndef HEADERS_H__
#define HEADERS_H__
#include <iostream>
#include <string>
#include <vector>
#endif // HEADERS_H__
次に、代わりにこのファイルをソース ファイルに含めることができます。
#include "headers.h"
必要なインクルードを含む独自のヘッダー ファイルを作成し、このヘッダー ファイルをインクルードできます。