2013-10-25 6 views
0

в моем классе Definiton я есть следующие другу функции:оператор << и оператор >> перегружен функции

 friend ostream& operator << (ostream& out, const Person& p1); 

     friend istream& operator >> (ostream& out Person& p1); 

В моей implentation файле:

 ostream& operator << (ostream& out, const Person& p1) 
     { 
     out<< p1.age; //this is a private variable 
     } 

     istream& operator << (istream& in, Person& p1) 
     { 
     in >> p1.age; //this is a private variable 
     } 

Но когда я компилирую это, я получаю ошибка, которая говорит, что «ostream» не называет тип друга ostream & operator (ostream & out, const Person & p1) .. то же самое для istream. Поскольку это функции друзей, они могут получить доступ к частным переменным i.e age, так что проблема?

+3

Вы пробовали квалифицируя 'ostream' с' std' имен, например, 'Станд :: ostream'? – dreamlax

+2

Вам нужно включить '' и' '. В том числе '' также будет работать. – juanchopanza

+1

ваши функции также должны возвращать поток. то есть «вернуть»; – Chemistpp

ответ

1

Так первый, ваша функция должна возвращать что-то, так:

ostream& operator << (ostream& out, const Person& p1) 
    { 
    return out<< p1.age; //this is a private variable 
    } 

и

istream& operator << (istream& in, Person& p1) 
    { 
    return in >> p1.age; //this is a private variable 
    } 

вы должны помнить, чтобы добавить include <iostream> заголовок. и using namespace std;

и больше всего одного опечатка

friend istream& operator >> (istream& out Person& p1); 
Смежные вопросы