重载<<与重复符号链接错误

Jor*_*hez 3 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;
    }
Run Code Online (Sandbox Code Playgroud)

错误发生在链接步骤中,并且没有与类标题的双重链接,因为它是一个非常简单的示例.

在此输入图像描述

Sym*_*ion 8

此特定错误意味着函数被编译为两个不同的转换单元.如果将函数定义放在标题中并将其包含在两个不同的源文件中,则很可能会发生这种情况.

从广义上讲,你有两个解决方案:

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