我正在创建地图:
std::map<TString, TString> cuts;
其中 TString 是一个 ROOT 框架类,它将字符串存储为 char* (并具有一些附加功能),我使用 , 添加到我的 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’
任何有关如何解决此错误并使我的迭代器工作的帮助将不胜感激。