Eclipse c ++ метод не может быть разрешен

0

Заголовок:

#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;
}

Почему мне нужно поставить "Patientenliste ::" перед "liste" в определении оператора + = в исходном коде? Eclipse не может его решить, но он должен это делать, не так ли? Работал отлично с моим предыдущим проектом...

  • 0
    Что вы имеете в виду, затмение не может решить это? Ожидаете ли вы, что мастер автозаполнения сделает это автоматически? Помещение «Patientenliste ::» перед списком в определении оператора + = - это базовая вещь определения класса в C ++. Это не имеет ничего общего с Eclipse.
Теги:
methods
resolve

1 ответ

3
Лучший ответ

Эта

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

должно быть

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

Вы используете Patientenliste:: as operator+ = входит в сферу действия этого класса, то есть члена этого класса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню