我在下面的代码中遇到编译错误。错误是:
/ ... /main.cpp:21:22: error: no member named 'name' in 'boost::ptr_container_detail::ref_pair<std::__1::basic_string<char>, repo *const>'
std::cout << it->name;
~~ ^
我在这里做错了什么?我已经尝试了it.name和it-&gt; name并且都没有用。
问候,大卫。
#include <boost/ptr_container/ptr_map.hpp>
class repo {
public:
repo(const std::string & repo_name) : name(repo_name) {}
std::string name;
};
typedef boost::ptr_map<std::string, repo> repo_map;
repo_map repos;
int main() {
std::string repo_name("x");
repo_map::iterator it = repos.find(repo_name);
if (it == repos.end()) {
it = repos.insert(repo_name, new repo(repo_name)).first;
}
std::cout << it->name;
return 0;
}
答案 0 :(得分:1)
我认为这将完成工作
它 - &GT; second.name
答案 1 :(得分:1)
由于它是 ptr _map,因此会返回pair<key, ptr_value>
。所以你需要:
it->second->name