首先是我的代码布局:
啊
class STORAGE_CLASS_DECLARATOR A : public PureVirtual
{
some member functions, all working;
void someFunctionCallingOperator<<();
friend std::ostream& operator << (std::ostream &, A *);
}
A.cpp
std::ostream& operator << (std::ostream & out, A * a){...}
void A::someFunctionCallingOperator<<(){...}
其中 Storage_xxx_declarators 是 declspec 的宏。我已经尝试过使用和不使用声明符的朋友功能都无济于事。
我在 operator<< 函数上得到一个未解析的外部符号。
据我了解,这可能是由于:
- 该函数没有正文,这显然是不正确的,因为该文件肯定会针对正在工作的其他函数进行解析。
- 符号未正确导出。同样,我不知道这是如何发生的,在实际场景中,此处 A 的 operator<< 实际上为另一个 B 类调用了 operator<<,并且该函数也显示了相同的错误。因此,A 的定义必须在某个时候被解析。
我意识到链接是一个单独的阶段,而且我一定是在做一些非常简单的错误,但我已经凝视了一段时间,无法从理论上解释为什么会发生这种情况,所以我转向 SO 寻求帮助
谢谢你,AK