error LNK2005 --类的声明和定义放在一个文件中

刷C++primer的时候,将类的声明和定义均放在头文件中,报错error LNK2005

1>  Sales_data.h
1>Sales_data.obj : error LNK2005: "public: class Sales_data & __thiscall Sales_data::operator+=(class Sales_data const &)" (??YSales_data@@QAEAAV0@ABV0@@Z) 已经在 main.obj 中定义
1>Sales_data.obj : error LNK2005: "class Sales_data __cdecl operator+(class Sales_data const &,class Sales_data const &)" (??H@YA?AVSales_data@@ABV0@0@Z) 已经在 main.obj 中定义
1>Debug\Sales_data.obj : warning LNK4042: 对象被多次指定;已忽略多余的指定
1>E:\C++Projects\PrimerCode\02\Debug\02.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
1>
1>生成失败。
1>

原始代码:
Sales_data.h:

#include <iostream>
#include <string>
using namespace std;

#ifndef SALES_DATA_H_INCLUDE
#define SALES_DATA_H_INCLUDE

class Sales_data{
	//友元函数
friend std::istream& operator >> (std::istream&,Sales_data&);
friend std::ostream& operator << (std::ostream&,const Sales_data&);
friend bool operator > (const Sales_data&,const Sales_data&);
friend bool operator < (const Sales_data&,const Sales_data&);
friend bool operator == (const Sales_data&,const Sales_data&);

//构造函数
public:
	Sales_data() {};
	Sales_data(const std::string &book):bookNo(book){};
	Sales_data(std::istream &is){ is>>*this;};

public:
	Sales_data& operator += (const Sales_data&);
	std::string isbn() const {return bookNo;};

private:
	std::string bookNo;
	int units_sold;
	double sellingprice;
	double saleprice;
	double discount;


};
//Sales_data operator + (const Sales_data&,const Sales_data&);

inline std::istream& 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值