带有cout的编译器错误消息
Compiler error message with cout
我之前打错了错误信息。
我目前得到以下编译器错误信息
error: no match for 'operator<<' in 'std::cout << Collection::operator[](int)(j)'
编译器抱怨的代码是
cout << testingSet[j];
其中testingSet
是Collection
类型的对象,对operator[]
进行重载,返回Example
类型的对象。Example
有一个友元函数,可以重载ostream和Example的operator<<
。
注意:这实际上在Visual Studio中编译得很好;但是不能用g++编译。
下面是operator<<
的实现:
ostream& operator<<(ostream &strm, Example &ex)
{
strm << endl << endl;
strm << "{ ";
map<string, string>::iterator attrib;
for(attrib = ex.attributes.begin(); attrib != ex.attributes.end(); ++attrib)
{
strm << "(" << attrib->first << " = " << attrib->second << "), ";
}
return strm << "} classification = " << (ex.classification ? "true" : "false") << endl;
}
和operator[]
Example Collection::operator[](int i)
{
return examples[i];
}
可能你的操作符应该声明为:
ostream& operator<<(ostream &strm, const Example &ex)
注意对Example的const引用。Visual Studio有一个扩展,它允许将引用绑定到非const r值。我猜你的operator[]
返回一个r值。
无论如何,operator<<
应该是const
,因为它不期望修改写入的对象。
相关文章:
- C++错误消息*成员参考.**初学者*
- 如何通过参数抛出错误消息
- glad 导致 glfwSwapBuffers 返回错误消息
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 重新定义预定义的 errno 错误消息 (E2BIG)
- SDL 映像:无法打开映像,仅显示错误消息
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 错误消息"expected expression"....有人知道它为什么这么说吗?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- GCC 警告和 gcc 错误消息之间的区别
- 为 c++ cin 上的输入数无效生成错误消息
- 来自带有mbedtls TLS的Mongoose Web服务器的错误消息
- 如何使用realsense摄像头调试ROS错误消息
- C++ 概念 - 需要括号中的概念会导致 2 条冲突的错误消息
- 编译器收到错误消息(textc.exe已停止)
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 使用 c++/WinRT Direct3D UWP Game DR 模板 Direct X11 的错误消息
- max_element() 给出非常奇怪的错误消息
- 不断收到错误消息,并非所有控制路径都返回值