错误:与"运算符>>"不匹配(操作数类型为"std::istream



我正在阅读 c++ 入门书第 5 版。我有一个光秃秃Sales_item课。这是主文件.cpp。

#include <iostream>
#include "Sales_item.h"
int main() {
Sales_item book;
std::cin >> book ;
}

Sales_item.h

#ifndef BOOKSTORE_SALES_ITEM_H
#define BOOKSTORE_SALES_ITEM_H
#include <iostream>
class Sales_item {
};

#endif //BOOKSTORE_SALES_ITEM_H

Sales_item.cpp为空。我正在关注 c++ 入门书。所以我假设它在这一点上是空的。

我收到此错误并且构建失败。

error: no match for 'operator>>' (operand types are 'std::istream {aka std::basic_istream<char>}' and 'Sales_item')

为空class做一个std::cin没有任何意义。如果你的class本身是空的,你为什么要这样做?

但我认为你需要这样做

在此处观看现场演示

#include <iostream>
#include <string>
class Sales_item {
std::string m_item_name;
int m_itemno;
public:
friend std::istream& operator>>(std::istream& o,Sales_item& obj) {
o>>obj.m_item_name>>obj.m_itemno;
return o;
}
friend std::ostream& operator<<(std::ostream& o,const Sales_item& obj) {
o<<obj.m_item_name<<' '<<obj.m_itemno;
return o;
}
};
int main() {
Sales_item s;
std::cin>>s;
std::cout<<s;
}

希望这有帮助。

相关内容

最新更新