操作符重载:得到无法识别的错误
operator overloading : getting unidentifiable errors
#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;
}
在这个程序中,我重载了+和<<操作符。但是当我试图替换这一行时,count <<item3;<<(item1 +第二条);或者计算<< item1 +第二条;我得到以下错误:
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)
这是怎么发生的?
你实现了
ostream& operator<<(ostream &out, sales_item& item3)
和
friend ostream& operator<<(ostream&,const sales_item&);
// ^
// const is missing in definition
嘿,错误是因为我在函数中引用了sales项ostream&(ostream &out,sales_item &item3);当我把&它开始工作得很好…由于
相关文章:
- C++出现控制台错误.我无法识别源代码的问题
- C++ 编译错误:gnu_printf是无法识别的格式函数类型
- 哗啦��错误:无法识别任何一组可以驱动指定关节的控制器
- GCC-7:错误:无法识别的命令行选项"-M64"
- C ++中的函数为什么我的编译器无法识别错误()
- OPENCV错误在XCode 8中加载Fisher面部识别器时
- 如何修复 Typedef 变量未识别错误 C++ (Visual Studio 2017)
- if 语句错误地识别括号中的空格
- 无法识别的模板声明错误 - 不明白我做错了什么
- 需要帮助识别简单多线程代码中的错误
- 识别指针处理方式中的错误
- 将“getopt_long”与无法识别的长选项一起使用时出现分段错误
- Windows Web Services框架中发生了无法识别的错误
- QT5对QinputDialog和Qmessagebox的未识别引用.错误
- 插入protobuf时SQLite无法识别的令牌错误:要处理哪些令牌以及如何处理?
- 控制台崩溃,尚无法识别错误
- 构建时OPENCV流量信号识别错误
- jenkins在构建cpp代码时不会识别错误
- 在g++中添加-M标志会导致文件格式不可识别错误
- 循环的范围识别错误的类型(C2440)