c++ - 重载 << 并出现重复符号链接(symbolic link)错误

标签 c++ operator-overloading

我的脑袋快要爆炸了。我不明白我在尝试用两个类(punto 和 vector)重载“<<”运算符时做错了。下面是代码,代码写在类的头文件中:

   std::ostream& operator << (ostream& salida, const punto& origen)
    {   
        // Se escriben los campos separados por el signo
        salida << "Punto --> x: " << origen.xf << " , y: " << origen.yf;
        return salida;
    }

    std::ostream& operator << (ostream& salida, const vector& origen)
    {
        // Se escriben los campos separados por el signo
        salida << "Punto --> x: " << origen.p1.xf << " , y: " << origen.p1.yf;
            return salida;
    }

错误出现在链接步骤中,并且没有与类头的双重链接,因为这是一个非常简单的示例。

enter image description here

最佳答案

这个特殊的错误意味着一个函数被编译成两个不同的翻译单元。如果您将函数定义放在 header 中并将其包含到两个不同的源文件中,则很可能会发生这种情况。

从广义上讲,您有两种解决方案:

  1. 在标题中声明而不是定义您的函数。在您的源文件中定义(实现)它。
  2. 将您的函数声明为静态或内联。

关于c++ - 重载 << 并出现重复符号链接(symbolic link)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924007/

相关文章:

c++ - 在centos上构建gcc?

c++ - netbeans c++ googletest 从 gui 运行测试

C++ 在模板类中重载 operator+

operator-overloading - D 运算符重载

c++ - vector 的 vector 是否可以因为其中一个元素被重新分配而被重新分配?

c++ - 字符串运算符 C++

c++ - 帮助重新排列/求解方程式

c++ - 我怎样才能 "override"[] 在 C++ 中接受两个参数?

c++ - 比较有理数

c++ - 在 C++ 中重载 == 和 != 运算符