关闭。这个问题需要debugging details .它目前不接受答案。
想改进这个问题?将问题更新为 on-topic对于堆栈溢出。
1年前关闭。
Improve this question
我真的不想诉诸于此,但我真的不知道为什么我的代码没有编译(gcc)..('模板参数推导/替换失败'等)
错误信息:
error: no match for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'const EAN_code')
头文件#ifndef HEADER_H
#define HEADER_H
using namespace std;
#include <iostream>
class EAN_code {
int ean_code;
};
class Order_item {
EAN_code item_number;
unsigned qty;
public:
Order_item(const EAN_code&, unsigned);
ostream& print(ostream&) const;
};
ostream& operator<<(ostream&, const Order_item);
#endif
源文件#include "header.h"
Order_item::Order_item (const EAN_code& code, unsigned qty) : item_number{code}, qty{qty} {}
ostream& Order_item::print(ostream& o) const {
return o << qty << " x " << item_number;
}
ostream& operator<<(ostream& o, const Order_item i) {
return i.print(o);
}
最佳答案
问题在这里:
return o << qty << " x " << item_number;
具体来说:<< item_number
item_number 的类型为 EAN_code
而您还没有提供 operator<<
为它重载。使用与您已经为 Order_item
所做的类似的模式我建议您将问题标题更改为“如何查找 C++ 流操作符错误”之类的内容。
关于c++ - 如何诊断流式运营商问题 : no match for 'operator<<' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63728479/