グローバルにではなく、標準的なものをローカルに#includeすることができます(ある関数、一つのクラス、など)。非常に単純な例を取ると、std :: stringを使用したいかもしれませんが、それはあるクラスでのみ必要であり、どこにも存在するオーバーヘッドを必要としません。ローカル#includes
答えて
#include
をローカルにするのではなく、必要なクラスを別のファイルに移動するだけです。
#include
は、単に(preprocessorによって)コンパイル前のテキスト置換の一種に過ぎないため、include文を置く場所にすぎません。
多分、あなたは「一つだけ.cppファイルに」を「ローカル」として参照のうえと「グローバル」「すべての.cppファイルで」などをへています。
これが当てはまる場合は、#include
を、その.cppファイルに必要な場所にのみ入れることで、 "ローカル"として作成できます。複数のファイルに1つの#include
ステートメントを含むファイルを含める場合は、includeステートメントを.hファイルに置き、必要なすべてのファイルの中に.hファイルを含めます。
#include
は、precompiled headerとして機能する.hヘッダーファイルです。
std::string
の定義をローカルヘッダ(プロジェクトディレクトリにある)に入れることができます。
std::string
のようなテンプレートクラスの場合、これは簡単な仕事ではありません。それはテンプレートなので、宣言全体が必要になり、実行時にプログラムでヘッダーに宣言されたとおりにstd::string
が使用されます。
std::string
は異なる方法で実装することができますが、インターフェイスはと同じにする必要があります。
したがって、短い答えは:いいえ、システムヘッダーを使用します。
.cppファイルに何か#includeすると、他のファイルのこのヘッダにアクセスすることはできません。しかし、bhファイルで#hincludeしてからc.cppでbhを#includeすると、c.cppでahにアクセスできると思います。
希望することを実行する方法の1つは、class IMPL
あなたのクラスのメンバーとしてそれへのポインタを使用します。それを定義して別ファイルのyour_class::IMPL
に実装します。そうすれば、あなたは完全なデータ隠蔽を実現できます。
通常は 'pimlイディオム'と呼ばれています。http://c2.com/cgi/wiki?PimplIdiom –
@Pete Kirkham:20年以上使っていて、名前がついていなかったことは分かりませんでした。時々見ているが、何があったのかわからない。私が知っていることを知って、知っている! –
- 1. Will_paginate for includesコメント
- 2. Meteor package.js with includes
- 3. WiX Includes vs Fragments
- 4. Apache Sling content includes - CQ5
- 5. drupal user warning includes/bootstrap.inc
- 6. Edge Side Includes in Laravel
- 7. ng-messages-includes not working
- 8. 。オブジェクトの一部に.includes()
- 9. IE ajax解析/ .includes()&.indexOf
- 10. Laravelブレードのカスタムディレクティブwith includes partial
- 11. Eclipse CDT:自動化Organize Includes
- 12. 関数内の.includesメソッドの使用
- 13. Javascript - Ajaxリクエスト(json/htmls response includes/= something)
- 14. .includes()を使用してJavascriptの 'if'ステートメント
- 15. 文字列正規表現 - includesとendsWith
- 16. Javascript includesメソッドがMongoDB IDで機能しない
- 17. wp-includesワードプレスのフォルダの正しいURLを取得
- 18. wp-includesファイルの機能をオーバーライドするWordpressプラグイン
- 19. find()内でincludes()を使用できますか?
- 20. ng-includesはangularJSのために働いていません
- 21. プロパティ 'includes'が 'Subscription'タイプにはありません-angular2
- 22. "includes" angle2プロジェクトでインターネットエクスプローラで機能が動作しない
- 23. 関数内に複数の 'includes'が含まれています
- 24. Angular Includesを含むJQueryインクルードを使用できますか?
- 25. スイッチのJavascriptの場合、文字列「includes()」を使用
- 26. Internet Explorerがincludes()をサポートしないのはなぜですか?
- 27. .find()の前後に.Includes()メソッドを配置しますか?
- 28. GLEE w/includesを使用していますか?
- 29. ファイルはincludesを使用してのみ実行できます
- 30. Joi.array()。includesは関数エラーではありません
#includeのinclude(文字列を使用するクラスと#include)の後ろにあるメインプログラムの部分は、この場合std :: stringにアクセスできますか? –
alan2here
@ alan2here:クラスヘッダー(.h)に '#include'を置くと、クラスをインクルードしたときにメインプログラムもアクセスできます。クラスの実装(.cpp)に '#include 'がある場合、それはそのファイルにしか見えません。 –
casablanca
ありがとう、それは質問に答える。 – alan2here