2012-12-05 62 views
-1

我创建一个图:的std ::地图<>:迭代错误

std::map<TString, TString> cuts; 

其中TString是存储字符串作为字符*(和具有一些额外的功能)一个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’ 

就如何解决这个错误,让我的迭代器工作任何帮助将非常感激。

+1

错字! 'TSring' - >'TString' –

回答

3

你拼错了;你想要TString,而不是TSring

+1

是的,就是这样。今天早上必须有诵读困难症... – mareks

相关问题