我正在阅读 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;
}
希望这有帮助。