我正在尝试编译 Microsoft 示例“Overloading the << Operator for Your Own Classes”但出现以下链接错误:
error LNK1169: one or more multiply defined symbols found
error LNK2005: "class std::basic_ostream > & __cdecl operator<<(class std::basic_ostream > &,class Date const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVDate@@@Z) already defined in Date.obj
有人知道为什么这没有编译吗?
最佳答案
如果您在头文件中定义了运算符,则必须将其声明为内联
,否则它将在包含该头文件的所有翻译单元中定义。
但最好将它移到一个实现文件中,除非您有充分的理由将它放在标题中。
关于c++ - Microsoft 重载 << 运算符示例会引发链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9053514/