C++ 如何修复g++;架构x86_64的未定义符号错误?我使用ideclion
我只有一个带有.h和.cpp文件的自定义类,但在尝试从main.cpp(使用IDE clion)创建此类实例时出错 我只是初学阅读C++入门课的学生,如果有一些不合适的东西,请指出。 main.cppC++ 如何修复g++;架构x86_64的未定义符号错误?我使用ideclion,c++,macos,clion,C++,Macos,Clion,我只有一个带有.h和.cpp文件的自定义类,但在尝试从main.cpp(使用IDE clion)创建此类实例时出错 我只是初学阅读C++入门课的学生,如果有一些不合适的东西,请指出。 main.cpp #include "Fun.h" void Solve(); int main() { Solve(); return 0; } void Solve() { Sales_data total; if(read(cin,total)){ //rea
#include "Fun.h"
void Solve();
int main()
{
Solve();
return 0;
}
void Solve()
{
Sales_data total;
if(read(cin,total)){ //read the first record
Sales_data temp;
while(read(cin,temp)){
if(temp.isbn() == total.isbn())
total.combine(temp);
else{
print(cout,total) << endl;
total = temp;
}
}
print(cout,total);
}//if
else{
cerr << "No data!?" << endl;
}
}
#include "Fun.h"
using std::istream;
using std::ostream;
double Sales_data ::avg_price() const {
if(units_sold)
return revenue/units_sold;
else
return 0;
}
Sales_data& Sales_data:: combine(const Sales_data& rhs){
units_sold += rhs.units_sold;
revenue += rhs.revenue;
return *this;
}
istream &read(istream &is,Sales_data &item)
{
double price = 0;
is >> item.bookNo >> item.units_sold >> price;
item.revenue = price * item.units_sold;
return is;
}
ostream &print(ostream &os, const Sales_data &item)
{
os << item.isbn() << " " << item.units_sold << " "
<< item.revenue << " " << item.avg_price() ;
return os;
}
Sales_data add(const Sales_data& lhs,const Sales_data& rhs)
{
Sales_data sum = lhs;
sum.combine(rhs);
return sum;
}
#包括“Fun.h”
void Solve();
int main()
{
Solve();
返回0;
}
void Solve()
{
销售数据合计;
if(read(cin,total)){//读取第一条记录
销售数据温度;
while(读取(cin、temp)){
如果(临时isbn()=总计isbn())
联合收割机(温度);
否则{
打印(cout,total)>item.units\u已售>>价格;
item.revenue=价格*item.units\u售出;
回报是;
}
ostream&print(ostream&os、const Sales_数据和项目)
{
os我认为问题在于print
函数的声明和定义不同(Sales\u data
参数在声明中是一个引用,而在定义中是一个常量引用):
将头文件中的声明更改为:
ostream &print(ostream &, const Sales_data &);
ostream &print(ostream &,Sales_data &); // Fun.h
ostream &print(ostream &os, const Sales_data &item) // Fun.cpp
ostream &print(ostream &, const Sales_data &);