Usando cin >> y cout << para rellenar los campos de una clase C ++

Tengo una clase en MyClass.h definida así:

 #ifndef MyClass_h #define MyClass_h #include  #include  #include  using namespace std; class MyClass { public: string input void ReadFrom(istream &is); void WriteTo(ostream &os) const; }; #endif /* MyClass_h */ 

MyClass.cpp ve así:

 #include  #include  #include  #include "MyClass.h" using namespace std; void MyClass::ReadFrom(istream &is) { // put data into member 'input' } void MyClass::WriteTo(ostream &os) const { // output data in member 'input' } istream& operator >>(istream &is, MyClass &cls) { cls.ReadFrom(is); return is; } ostream& operator <<(ostream &os, const MyClass &cls) { cls.WriteTo(os); return os; } 

main.cpp ve así:

 #include  #include  #include  #include "MyClass.h" using namespace std; int main(int argc, const char * argv[]) { MyClass c; std::cout << "Enter some input" <> c; return 0; } 

Lo que estoy tratando de lograr es anular los operadores >> y << para que std::cin pueda simplemente leer datos en los miembros de la clase, y luego std::cout puede escupir todos los datos de esos miembros .

No quiero usar funciones de friend .

En este momento, estoy recibiendo un error en torno a la std::cin >> c; línea que dice:

Operandos no válidos para expresiones binarias (‘istream’ (también conocido como ‘basic_istream ‘) y ‘MyClass’)

El comstackdor no ve las sobrecargas del operador en su unidad de traducción main.cpp , porque las sobrecargas no se encuentran en ese archivo, ni se encuentran en ninguno de los archivos #include . MyClass.h declarar ambas sobrecargas en su archivo MyClass.h , después de la statement MyClass :

MyClass.h:

 #ifndef MyClass_h #define MyClass_h #include  #include  #include  using namespace std; class MyClass { public: string input void ReadFrom(istream &is); void WriteTo(ostream &os) const; }; istream& operator >>(istream &is, MyClass &cls); ostream& operator <<(ostream &os, const MyClass &cls); #endif /* MyClass_h */ 

Puede dejar las definiciones como están en su archivo MyClass.cpp .