gpt4 book ai didi

c++ - 在 C++ 中迭代包含类对象的映射

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:37 24 4
gpt4 key购买 nike

我正在用 C++ 创建一个映射,其中包含一个整数键,值是 User 类的一个对象。我可以使用以下代码将对象插入到 map 中 -

std::map<std::string,User>::iterator it = usermap.begin();
usermap.insert (it, std::pair<string,User>(object.userid,object));

我用来将对象写入 .bin 文件的代码是 -

map<std::string, User>::iterator it;
for ( it = usermap.begin(); it != usermap.end(); it++ )
{
myfile2 << "Object:" << it->second << "\n";
}

但是我在尝试运行代码时遇到的错误是 -

在/usr/include/c++/4.8.2/iostream:39:0 包含的文件中, 来自 a3part2_5.cpp:2:/usr/include/c++/4.8.2/ostream:548:5: 注意:模板 std::basic_ostream& std::operator<<(std::basic_ostream&, const unsigned char*) 运算符<<(basic_ostream& __out, const unsigned char* __s) ^/usr/include/c++/4.8.2/ostream:548:5: 注意:模板参数推导/替换失败:a3part2_5.cpp:90:31: 注意:无法转换 'it.std::_Rb_tree_iterator<_Tp>::operator->, User>>()->std::pair, User>::second'(类型 'User ') 输入'const unsigned char*' myfile2 << "Obejct: "<< it->second << "\n";

有解决错误的方法吗?

我的用户类定义为 -

class User 
{
public:
string userid; string uid; string gid; string gecos; string directory; string shell;
User() {}
};

最佳答案

User是用户定义的类,因此 ostream无法理解你的User当你做的时候对象 myfile2 << "Object:" << it->second << "\n";

这应该有帮助 Overloading the << Operator for Your Own Classes.

所以你应该重载operator <<为你的类(class)。

关于c++ - 在 C++ 中迭代包含类对象的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45160361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com