現在、ヘッダー ファイルで、配列を使用してコードに std::vectors を実装しようとすると、いくつかの問題が発生しています。
過去 1 時間 30 分にわたって StackOverflow と Google を検索しましたが、役立つ情報が見つかりません。
簡単に言えば、ヘッダー ファイル内で初期化および設定された配列を使用してきました。s を使用してこのコードを変換するstd::vector
と、いくつかの問題が発生しました。
私は (cern) ROOT でプロジェクト分析を行っています。これは、明らかな多くの を使用してtypedef
います。Int_t
int
インポートされたヘッダー ファイルの 1 つが自動的に を呼び出すusing namespace std;
ため、すべてのstd::
名前空間を省略しました。
現在私は持っています:
// file.h
// ...
const Int_t kNpdgCodes = 14;
Int_t pdgCodeID[kNpdgCodes] = {
0, // other
22, // photon
111, // pi0
-211, // pim
211, // pip
221, // eta
130, // K0L
310, // K0s
-321, // Km
321, // Kp
-2112, // (a)n
2112, // n
2212, // p
3122 // Lambda
};
// ...
私はそれをフォームで取得しようとしています(または、便利な = コンストラクターがないため[C ++ 11を使用できません]):
// file.h
// ...
vector<Int_t> pdgCodeID;
pdgCodeID.push_back( 0); // other
pdgCodeID.push_back( 22); // photon
pdgCodeID.push_back( 111); // pi0
pdgCodeID.push_back( -211); // pim
pdgCodeID.push_back( 211); // pip
pdgCodeID.push_back( 221); // eta
pdgCodeID.push_back( 130); // K0L
pdgCodeID.push_back( 310); // K0s
pdgCodeID.push_back( -321); // Km
pdgCodeID.push_back( 321); // Kp
pdgCodeID.push_back(-2112); // (a)n
pdgCodeID.push_back( 2112); // n
pdgCodeID.push_back( 2212); // p
pdgCodeID.push_back( 3122); // Lambda
// ...
これをコンパイルすると (ROOT を使用しますが、重要ではありません)、次のエラーが発生します。
error: expected constructor, destructor, or type conversion before ‘.’ token
に対応する各行push_back
。
これはヘッダーファイル内でも可能ですか? 何がうまくいかないのですか?
助けていただければ幸いです。