-1

私は地図を作成しています:

std::map<TString, TString> cuts;

ここで、TStringは、文字列をchar *として格納する(およびいくつかの追加機能を備えた)ROOTフレームワーククラスであり、C++コードに追加します#include "TString.h"

次に、いくつかのカットマップ要素を作成します。

cuts["cTRIGem0"] = "eminusL0ElectronDecision_TOS>0";

次に、カットをループするイテレータを作成してみます。

std::map<TSring, TSring>::iterator itr = cuts.begin();

これにより、多くのエラーが発生します。

Wenu.cpp:561:12: error: ‘TSring’ was not declared in this scope
Wenu.cpp:561:26: error: template argument 1 is invalid
Wenu.cpp:561:26: error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’
Wenu.cpp:561:26: error:   expected a type, got ‘TSring’
Wenu.cpp:561:26: error: template argument 3 is invalid
Wenu.cpp:561:26: error: template argument 4 is invalid
Wenu.cpp:561:38: error: expected initializer before ‘itr’

キーワードが役立つかもしれないことをどこかで見ましたtypename。だから私はそれをイテレータ宣言に追加しました:

std::map<typename TSring, typename TSring>::iterator itr = cuts.begin();

これは新しいエラーを引き起こしました:

Wenu.cpp:561:44: error: wrong number of template arguments (1, should be 4)
/cvmfs/lhcb.cern.ch/lib/lcg/external/gcc/4.6.2/x86_64-slc5/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../include/c++/4.6.2/bits/stl_map.h:88:11: error: provided for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’
Wenu.cpp:561:56: error: expected initializer before ‘itr’

このエラーを解決し、イテレータを機能させる方法についてのヘルプをいただければ幸いです。

4

1 に答える 1

3

スペルが間違っています。あなたが欲しいTString、そうではありませんTSring

于 2012-12-05T10:29:55.570 に答える