c ++ istream operator overloading 未解决
c++ istream operator overloading unresolved
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 error LNK2019: 未解析的外部符号 "class std::basic_istream & __cdecl src::operator>>(class std::basic_istream &,class src::date &)" (??5src@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@std@@AAV12@AAVdate@0@@Z) 在函数中引用“public: bool __thiscall src::DB::del_vouc(int const &)” (?del_vouc@DB@src@@QAE_NABH@Z) C:\Users\Dell\Documents\Visual Studio 2013\Projects\foodstore\foodstore\DB.obj foodstore
istream >> para_date.str_time;
return istream;
这两行应该是:
para_stream >> para_date.str_time; // para_stream is the object of class istream
return para_stream ;
您应该使用 class para_stream
的对象,而不是 class。改完之后,在我的系统中编译成功了。
链接器抱怨 src::DB
有一个“未解析的外部符号”
您在 source.cpp 中定义了一个函数,因此它保留在该文件(翻译单元)内部。
如果在头文件中添加声明,像这样
std::istream& operator >> (std::istream& para_stream, date& para_date);
它在外部可用,而不是“隐藏”在 cpp 文件中。
或者,您可以在头文件中定义(而不是仅仅声明)它,但它必须标记为内联,否则每次包含头文件时您都会得到一个定义。
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 error LNK2019: 未解析的外部符号 "class std::basic_istream
istream >> para_date.str_time;
return istream;
这两行应该是:
para_stream >> para_date.str_time; // para_stream is the object of class istream
return para_stream ;
您应该使用 class para_stream
的对象,而不是 class。改完之后,在我的系统中编译成功了。
链接器抱怨 src::DB
有一个“未解析的外部符号”
您在 source.cpp 中定义了一个函数,因此它保留在该文件(翻译单元)内部。
如果在头文件中添加声明,像这样
std::istream& operator >> (std::istream& para_stream, date& para_date);
它在外部可用,而不是“隐藏”在 cpp 文件中。
或者,您可以在头文件中定义(而不是仅仅声明)它,但它必须标记为内联,否则每次包含头文件时您都会得到一个定义。