2017-03-01 2 views
-3

私はこのファイルをC++用に用意しています。ファイルの入力を容易にするはずですが、私はそれが効率的なメモリでした。
私はこのようになります私のヘッダファイル内のクラスがあります。C++クラスで#includeできますか?

class FileInputOutput { 
    #include <fstream> 

をしかし、私はそれがとにかく一番上に#include文のようなものが含まれるかどうかわからない、またはそれはちょうどそれが含まれる場合クラスが呼び出されたとき。

誰でもお手伝いできますか?

+0

これはユーザサプライ品の質問に答えるものです:http://stackoverflow.com/questions/7347033/including-headers-inside-class-declaration-definition – NathanOliver

+0

標準ヘッダの場合IMHOの場合は、それらをグローバルスペースヘッダーの先頭に。 – NathanOliver

+1

@ NathanOliverこの例では、標準ヘッダーを使用しています。私はほとんどクラス定義の標準ヘッダーを含めるシナリオを想像することはできません。 –

答えて

5

#includeはC++クラスで可能ですか?

あなたの質問タイトルとして:はい、可能です。

c(++)プリプロセッサは、#includeのdファイルのテキストを展開するだけで、コンパイルの別の段階でC++検証がチェックされます。

class FileInputOutput { 
#include <fstream> 
}; 

よう

コードは、あなたのクラスの中fstreamからすべてのテキストを挿入します。おそらくあなたが望んでいないものだ

ただ単にコンパイル時にプリプロセッサが含まれるファイルの内容のコピー/貼り付け、その結果

#include <fstream> 

class FileInputOutput { 
    std::fstream fs; 
}; 
1

#includeを行うfstreamからクラス宣言を使用します。 そうですね、あなたはそれを行うことができますが、効率的なものは何も買っていません。それはあなたがを含むファイルに直接インライン含まれるファイルの内容を書いていたかのようにです。

2

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; 
} 
関連する問題