2016-10-12 11 views
2

C++では、クラスメンバー変数をexternとしてマークできますか?クラス内でextern変数を使用できますか?

私は、文字列Aは私には、別のヘッダ・ファイルに定義されて

class Foo { 
    public: 
     extern string A; 
}; 

を持つことができますか?私はあなたの質問に正しくコメントを理解していれば

+3

を印刷する必要があります。あなたは何を達成しようとしていますか?たぶんあなたは静的メンバー変数を探していますか? – krzaq

+0

オブジェクトをインスタンス化するたびに読み込む代わりに、実行可能ファイルにインクルードしたいという巨大なベクトルがあります。静的メンバー変数を調べます。それらを別のファイルで定義する方法はありますか? – nilcit

+0

はい、実際にはほとんど義務があります。 – krzaq

答えて

1

、あなたがstatic data members

を探しているstaticとしてフィールドを宣言します。

// with_static.hpp 
struct with_static 
{ 
    static vector<string> static_vector; 
}; 

は一つだけTU(±.cppファイル)でそれを定義します。

// with_static.cpp 
vector<string> with_static::static_vector{"World"}; 

次に使用できます。あなたはclass::fieldobject.field表記を使用することができ、それらはすべてが同じオブジェクトを参照していることに注意してください:

with_static::static_vector.push_back("World"); 

with_static foo, bar; 
foo.static_vector[0] = "Hello"; 

cout << bar.static_vector[0] << ", " << with_static::static_vector[1] << endl; 

上記のそれではないですHello, World

live demo

+0

ベクトルは約50,000のエントリであり、コード内で初期化したいのです(ベクトルv = {"first_word"、 "second_word私はFoo.hとFoo.cppを持っています;それを保存する方法はありますか? * another *ファイル内のメンバ変数? – nilcit

+0

はい、編集を参照してください – krzaq

+0

私は完全に解決策を理解しているかどうかはわかりませんが、with_static.hppファイルでstatic_vectorを宣言できます私は*初期化をwith_static.cppファイルに入れたいとは思っていません。 * another *ファイル内のstatic_vector = {"hello"、 "world"}のようなものです。可能ですか – nilcit

関連する問題