我正在尝试打印出存储在字符串中的地址值。编译后,它显示错误:no match for 'operator<<'
。这是否意味着Address_list
内部的内容不匹配?
#include <iostream>
#include <string>
#include <map>
#include "IPHost.h"
using namespace std;
int main() {
map<string, IPHost> Address_list;
Address_list["google.com"]=IPHost(74,125,225,20);
cout << "google.com has address" << Address_list["google.com"] << endl;
}
答案 0 :(得分:3)
Address_list["google.com"]
将返回您之前存储的IPHost class
实例。然后它会尝试将operator<<
应用于它发出错误的实例。
这意味着您没有重载运算符&lt;&lt;为您的IPHost class
。
答案 1 :(得分:1)
正如其他人所说,你需要一个重载的运算符&lt;&lt;对于IPHost ......
......你会这样做:
inline std::ostream& operator<<(std::ostream& os, const IPHost& host)
{
// code to stream the contents of IPHost out to os here
// for example:
os << "IPHost{" << host.address() << "}";
// remember to return a reference to the ostream
return os;
}