我在一个特定的文件 cfileop.cpp 中重载了 ofstream 运算符,如下所示:
std::ostream& operator<<(std::ostream& ofs, LPCWSTR wideString)
{
//ofs << ConvertUnicodeToUtf8(wideString).GetBuffer();
ofs << CW2A(wideString,CP_UTF8);
return ofs;
}
在这个特定的文件中,使用操作员进行的任何呼叫都可以完美运行。我一点问题都没有。
但是,我需要在另一个文件中重载相同的运算符。当我在另一个位置 acrazyapp.cpp 重复这个调用时,我得到类似这样的输出:
02962AE010021A3402961018
029621C010021A3410022AF0
029621C010021A34029619D0
029621C010021A3410022A68
我认为,只需将重载的位置切换到 acrazyapp.cpp 即可解决。但是,这会导致 cfileop.cpp 无法正确输出。为了满足这两者,我将调用移至头文件 ch_ofstream.h,并将其包含在两个 cpp 文件中。但是,在这种情况下,我收到此错误:致命错误 LNK1169:找到一个或多个多重定义的符号。
如何确保上面的 ofstream 运算符在两个 cpp 文件中正确重载而不合并 cpp 文件?
谢谢!