可能重复:
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>
模板对象作为参数传递给另一个模板对象似乎存在问题。
- 为什么?
- 如何解决这个问题?