1

可能重复:
C++ 模板类型名迭代器

考虑这样的代码:

#include <map>
#include <boost/shared_ptr.hpp>

template <typename T>
class Test
{
     typedef std::map< int, boost::shared_ptr<T> > TMap;
     TMap myMap;

     void test()
     {
         TMap::const_iterator iter = myMap.begin(); // line 12
     }
};

正常编译后g++ main.cpp返回以下行:

main.cpp: In member function ‘void Test<T>::test()’:
main.cpp:12: error: expected ‘;’ before ‘iter’

如果我更改std::map< int, boost::shared_ptr<T> >std::map< int, int >,则它会编译。

boost::shared_ptr<T>模板对象作为参数传递给另一个模板对象似乎存在问题。

  1. 为什么?
  2. 如何解决这个问题?
4

0 回答 0