重载<<在友元函数中导致"未定义的符号用于体系结构x86_64"

时间:2017-12-12 17:28:51

标签: c++ operator-overloading friend-function

我正在尝试编译以下代码:

Numero.h

#include <iostream>

using namespace std;

class Numero {
public:
    explicit Numero(double n) : n(n) {};
    Numero operator+(const Numero& n2);
    Numero operator-(const Numero& n2);
    Numero operator*(const Numero& n2);
    Numero operator/(const Numero& n2);
    friend std::ostream& operator<<(std::ostream& os, const Numero& n);

private:
    double n;
};

Numero.cpp

#include "Numero.h"

Numero Numero::operator+(const Numero& n2) {
    return Numero{ n + n2.n };
}

Numero Numero::operator-(const Numero& n2) {
    return Numero{ n - n2.n };
}

Numero Numero::operator*(const Numero& n2) {
    return Numero{ n * n2.n };
}

Numero Numero::operator/(const Numero& n2) {
    return Numero{ n / n2.n };
}

std::ostream& operator<<(std::ostream& os, const Numero& n) {
    os << n.n;
    return os;
}

NumeroTestes.cpp

#include <iostream>
#include "Numero.h"

using namespace std;

int main()
{
    Numero n1{0};

    cout << n1 << endl;

    return 0;
}

生成以下错误:

  

架构x86_64的未定义符号:
  &#34;操作员LT;≤(标准:: __ 1个:: basic_ostream

     
    

&amp;,Numero const&amp;)&#34;,引自:           _main in NumeroTestes-5aa3e1.o ld:找不到架构x86_64 clang的符号:错误:链接器命令失败并带有退出代码     1(使用-v查看调用)

  

0 个答案:

没有答案