2011-12-07 61 views
0

我想在vs2005中编译我的代码。 我使用的std ::地图和boost :: shared_ptr的(v1.47.0) 我的代码看起来是这样的编译std :: map时出现boost :: shared_ptr错误

struct B { 
    int a; 
} 
typedef boost::shared_ptr<B> K; 

std::map<const std::string, K > mymap; 

//some code 

std::map<const std::string, K >::iterator it; 
for (it = mymap.begin(); it < mymap.end(); it++) 
{ 
    //do something 
} 

编译器是在给了一个错误的说法。 以下是错误

错误C2784: '布尔的boost ::操作<(常量的boost :: intrusive_ptr &,常量的boost :: intrusive_ptr &)':不能推导出模板参数的“常量的boost :: intrusive_ptr & 'from'std :: _ Tree < _Traits> :: iterator'。

任何帮助表示赞赏。 谢谢。

回答

1

您正在使用错误的操作符对mymap.end()进行检查。将环路更改为

for (it = mymap.begin(); it != mymap.end(); it++) 
相关问题