我正在尝试打印矢量中的每个元素,如下所示:
vector<users>::iterator i;
for(i = userlist.begin(); i<userlist.end(); i++)
{
cout << *i << "\n";
}
Run Code Online (Sandbox Code Playgroud)
然后我收到这样的错误:
no match for 'operator<<' in 'std::cout << (&i)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator* [with _Iterator = users*, _Container = std::vector<users, std::allocator<users> >]()'
Run Code Online (Sandbox Code Playgroud)
我错过了什么明显的事情?
您是否使用此签名定义了一个函数?:
std::ostream & operator<<(std::ostream &, const users &);
Run Code Online (Sandbox Code Playgroud)
它不应该是用户的成员功能,尽管它可能是也可能不是朋友,取决于您.原型应该放在类用户的头文件中,正文应该放在源(.cpp)文件中.我不知道你的用户类是如何定义的,或者你想如何格式化输出,但函数定义应如下所示:
std::ostream & operator<<(std::ostream & os, const users & U)
{
os << U.some_data_members;
os << U.and_or_some_member_functions();
os << whatever;
return os;
}
Run Code Online (Sandbox Code Playgroud)