Cにおけるプリプロセッサ++(およびCで)有効#include
ステートメントを使用したファイルに参照されたファイルのテキストをコピーして動作します。
ですから、このようなコードを書くとき:
Something.h
int my_rand() {
return 4; //chosen by dice roll, guaranteed to be fair
}
MAIN.CPP
#include "Something.h"
int main() {
return my_rand();
}
適切なコンパイルを開始する前に最終的なファイルは次のようになります。あなたのケースでは
int my_rand() {
return 4; //chosen by dice roll, guaranteed to be fair
}
int main() {
return my_rand();
}
<fstream>
の全体の内容は、あなたの真ん中にコピーされますので、
class my_class {
#include<fstream>
/*...*/
};
のようなものを書くことは、いくつかの非常に奇妙な動作になりますし、ほぼ確実にコンパイルされませんクラスは、それはあなたがそれを収容し、または<fstream>
を処理するために書かれていることを別のクラスに注入された方法であなたのクラスを書いたことは極めてまれです。
あなたのプログラムの途中で#include
を行うことができる場合があります。お守り:
マイResource.txtそれは
を書くのと同じですので、正しく、コンソールに
Blah Blah Blah Blah Blah
を出力します
R"D(
Blah Blah Blah Blah Blah
)D"
MAIN.CPP
int main() {
std::string blah_string = "" //The "" is unnecessary, but I use it to make Intellisense shut up
#include "My Resource.txt"
;
std::cout << blah_string << std::endl;
return 0;
}
int main() {
std::string blah_string =
R"D(
Blah Blah Blah Blah Blah
)D"
;
std::cout << blah_string << std::endl;
return 0;
}
これはユーザサプライ品の質問に答えるものです:http://stackoverflow.com/questions/7347033/including-headers-inside-class-declaration-definition – NathanOliver
標準ヘッダの場合IMHOの場合は、それらをグローバルスペースヘッダーの先頭に。 – NathanOliver
@ NathanOliverこの例では、標準ヘッダーを使用しています。私はほとんどクラス定義の標準ヘッダーを含めるシナリオを想像することはできません。 –