【发布时间】:2013-06-02 17:24:14
【问题描述】:
我遇到了一个小问题:我有一个包含结构的 unordered_set。我已经实现了哈希函数。但是当我第一次编译我的程序时,我得到了一些编译器错误,说我没有实现一个重载的“operator==”。
问题是当我声明我的重载时:
bool operator==(mapPoint const& p1, mapPoint const& p2){
return p1.x == p2.x && p1.y == p2.y;
}
我遇到了一些链接器错误。在包含标头的每个文件中,我都收到错误消息(复制符号 __XXXX_mapPointS1_)。
事实上,当它被放入实现文件时,它工作得很好,我将它与 unordered_set 一起使用。
我的问题是,我该如何解决这个问题?除了编译器之外,还有很多我无法理解的魔法。汉克斯
【问题讨论】:
-
看起来你的
operator==有外部链接。要么将其设为inline,要么将实现(= 函数定义/主体)放在源文件中而不是头文件中。
标签: c++ duplicate-symbol