我正在阅读c ++入门第5版。我有一个简单的Sales_item类。这是main.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')
答案 0 :(得分:2)
为空std::cin
执行class
没有任何意义。如果class
本身为空,为什么要这样做呢?
但我认为你需要这样做
查看实时演示here
#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;
}
希望这有帮助。