链接器错误重载<<流操作员

时间:2016-11-01 05:28:11

标签: c++ operator-overloading linker-errors

我遇到链接器错误试图超载的问题<<对于cout,我似乎在Stackoverflow和相关网站之间来回切换,并根据其他线程调整代码,但没有成功。请注意,我对重载很新,只是在这个程序中做了很多Math运算符重载,这也需要大量的反复和前进,但我认为现在正在工作......

无论如何,我试图将定义放在头文件中,如下所示:

std::ostream& operator<<(std::ostream&, const Vector2&);

CPP文件中的定义:

    std::ostream& operator<<(std::ostream& os, const Vector2& VInput)
{
    std::string TempString = "{ " + std::to_string(VInput.x) + ", " + std::to_string(VInput.y) + " }";
    os << TempString;
    return os;
}

但是我遇到了无法找到定义的错误。然后我读取将声明移出类,所以上面的定义现在在头文件中,但没有封装在类括号内。

这停止了未定义的错误,但现在我收到LNK2019错误,告诉我外部有一个未解析的错误。

然后我发现另一个人说将声明的定义作为一个,但是当我这样做时,我得到一个LNK2005错误,告诉我该函数已被定义多次,我相信这个头的包含是在项目中的几个地点。

我猜我正在做一些非常简单的事情,否则我想做的事情就是坏事,但有人可以根据上面的代码告诉我我在哪里放置可能导致这些错误的原因吗? / p>

0 个答案:

没有答案