标头:

#ifndef patientenliste_hpp
#define patientenliste_hpp

#include <vector>
#include <iostream>
#include "patient.hpp"

using namespace std;

class Patientenliste
{
private:
    vector<Patient> liste;

public:
    Patientenliste& operator+= (const Patient&);

    friend ostream& operator<< (ostream&, const Patientenliste&);
};


ostream& operator<< (ostream&, const Patientenliste&);

#endif


源代码:

#include "patientenliste.hpp"


Patientenliste::Patientenliste& operator+= (const Patient& p)
{
    liste.push_back(p);
    return *this;
}

ostream& operator<< (ostream& os, const Patientenliste& p)
{
    for(auto& i : p.liste)
        os << i;

    return os;
}


为什么必须在源代码中的运算符定义+ =中的“ liste”之前放置“ Patientenliste :::”? Eclipse无法解决它,但是应该解决,不是吗?
我以前的项目工作得很好...

最佳答案

这个

Patientenliste::Patientenliste& operator+= (const Patient& p)


应该

Patientenliste& Patientenliste::operator+= (const Patient& p)


您正在使用Patientenliste::,因为operator + =在该类的范围内,即该类的成员。

07-26 04:58