C++ 超载<&书信电报;具有重复符号链接错误

C++ 超载<&书信电报;具有重复符号链接错误,c++,operator-overloading,C++,Operator Overloading,我的头快要爆炸了。我不能理解我试图重载'是做错了。这个错误意味着一个函数被编译成两个不同的翻译单元。如果将函数定义放入头中并将其包含到两个不同的源文件中,则最有可能发生这种情况 从广义上讲,您有两种解决方案: 在标题中声明而不是定义函数。在源文件中定义(实现)它 将函数声明为静态函数或内联函数 不要把代码放在标题中。只将声明放在一个头文件中,将实现放在一个(并且只有一个).cpp文件中。如果示例如此简单,您可能不介意将其完整地呈现给我们。无关:您可以复制/粘贴控制台的输出,而无需截图。感谢您解释

我的头快要爆炸了。我不能理解我试图重载'是做错了。这个错误意味着一个函数被编译成两个不同的翻译单元。如果将函数定义放入头中并将其包含到两个不同的源文件中,则最有可能发生这种情况

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

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

  • 不要把代码放在标题中。只将声明放在一个头文件中,将实现放在一个(并且只有一个).cpp文件中。如果示例如此简单,您可能不介意将其完整地呈现给我们。无关:您可以复制/粘贴控制台的输出,而无需截图。感谢您解释解决方案。真是愚蠢的错误。
       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;
        }