2014-11-10 6 views
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

Что Вы подразумеваете, ecliipse не может решить эту проблему? Вы ожидаете, что мастер автозаполнения сделает это за вас автоматически? Помещение «Patientenliste ::» перед списком в определении оператора + = является базовым определением класса в C++. Это не имеет никакого отношения к Eclipse. – ha9u63ar

ответ

3

Это

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

должен быть

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

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

Смежные вопросы