我的main函数要调用下面这个头文件
#ifndef SALES_DATA_EX41_H
#define SALES_DATA_EX41_H
#include <iostream>
using namespace std;
class Sales_data;
ostream &print(ostream &os, Sales_data &sale);
class Sales_data
{
friend ostream &print(ostream &, const Sales_data &);
public:
};
ostream &print(ostream &os, const Sales_data &sale)
{
os << sale.bookNo;
return os;
}
#endif
在编译的时候报了这个错
undefined reference to `print(std::ostream&, Sales_data&)
他说我第10行声明的print 函数未定义,起初我还不明白,检查半个小时后,终于发现了第10行声明里sale 形参是Sales_data& 类型的,友元声明和21行定义处都是const Sales_data& 类型的,底层const 一个有一个没有,难怪。。。吐血了
P.S. 顶层const 确实有没有都可以,应该不报错的,但这儿是个底层const
|