istream >> ostream << Перегрузка оператора с помощью * указателя - PullRequest
1 голос
/ 24 мая 2011

Как бы я перегрузил операторы >> и <<, если они имеют дело с указателями? </p>

в заголовке:

friend std::istream& operator >>( std::istream& ins, Classname* & e);
friend std::ostream& operator <<( std::ostream& outs, const Classname * e);

в cpp:

std::ostream& operator <<( std::ostream& outs, const Classname * e)
{   // what do I do here?
return outs;
}
std::istream& operator >>( std::istream& ins, Classname* & e){
// what do I do here?
    return ins;
}

1 Ответ

6 голосов
/ 24 мая 2011

Зависит от того, что входит в класс Classname.Например, если у вас есть:

class Classname {
//...
private:
  int a;
};

.., то вы можете сделать:

std::ostream& operator <<( std::ostream& outs, const Classname * e)
{  
  outs << e->a;
  return outs;
}
std::istream& operator >>( std::istream& ins, Classname* & e){
    ins >> e->a;
    return ins;
}

Идея состоит в том, что операторы << и >> в идеале должны отражать друг друга -например, вы можете использовать их для сериализации и десериализации ваших экземпляров.

...