#include <iostream>
using namespace std;
class sales_item
{
friend ostream& operator<<(ostream&,const sales_item&);
public:
int item;
sales_item()
{
item=2;
}
sales_item operator+(sales_item& item1)
{
sales_item item2;
item2.item = item1.item+item;
return item2;
}
};
ostream& operator<<(ostream &out, sales_item& item3)
{
out<<item3.item;
return out;
}
int main(int argc, const char * argv[])
{
sales_item item1,item2;
sales_item item3=(item1+item2);
cout<<item3;
return 0;
}
在这个程序中,我重载了 + 和 << 运算符。但是当我试图替换行 cout << item3 ; 与 cout << (item1+item2) ; 或 cout << item1+item2 ;
我收到以下错误:
Undefined symbols for architecture x86_64:
"operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, sales_item const&)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
情况如何?