如何解决c ++ istream运算符重载未解决
source.h:
#include <iostream>
class date{
public:
std::string str_time;
friend std::istream& operator >> (std::istream& para_stream,date& para_date);
};
source.cpp:
#include "source.h"
std::istream& operator >> (std::istream& para_stream,date& para_date)
{
istream >> para_date.str_time;
return istream;
}
错误:
错误 2 错误 LNK2019:未解析的外部符号 "class std::basic_istream
解决方法
cout
这两行应该是:
istream >> para_date.str_time;
return istream;
您应该使用类 para_stream >> para_date.str_time; // para_stream is the object of class istream
return para_stream ;
的对象,而不是类。更改后,它在我的系统中编译成功。
链接器抱怨 src::DB
有一个“未解析的外部符号”
您已在 source.cpp 中定义了一个函数,因此它仍保留在此文件(翻译单元)内部。
如果在头文件中添加声明,像这样
std::istream& operator >> (std::istream& para_stream,date& para_date);
它在外部可用,而不是“隐藏”在 cpp 文件中。
或者,您可以在头文件中定义(而不是仅仅声明)它,但必须将其标记为内联,否则每次包含头文件时都会得到一个定义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。