I am relatively new at C++/QT and I can't get the following to compile. Note the declaration of the operator<< overload in class Employee. If instead I put the implementation here, it compiles. But if the impmentation is placed outside of the class declaration as is done below, I get the following errors: (errors point to the implementation code)
(1) QDataStream& Employee::operator<<(QDataStream&, const Employee&)' must take exactly one argument (2) `QDataStream& Employee::operator<<(QDataStream&, const Employee&)' member function declared in class `Employee' What's wrong with the implementation? It's driving me nuts. **************** #include <iostream> #include <qstring.h> #include <qvaluelist.h> #include <qdatastream.h> #include <qfile.h> class Employee { // DECLARATION friend QDataStream& operator<<(QDataStream &, const Employee &); public: Employee(): sn(0) {} Employee( const QString & forename, const QString & surname, int salary ) : fn(forename), sn(surname), sal(salary) {} QString forename() const { return fn; } QString surname() const { return sn; } int salary() const { return sal; } void setSalary( int salary ) { sal = salary; } private: QString fn; QString sn; int sal; }; // IMPLEMENTATION QDataStream& Employee :: operator<<(QDataStream &out, const Employee &emp) { out << emp.surname() << emp.forename() << emp.salary(); return out; } int main () { typedef QValueList<Employee> EmployeeList; EmployeeList list; list.append( Employee("John", "Doe", 50000) ); list.append( Employee("Jane", "Williams", 80000) ); list.append( Employee("Tom", "Jones", 60000) ); Employee mary( "Mary", "Hawthorne", 90000 ); list.append( mary ); mary.setSalary( 100000 ); QFile file("test.out"); file.open(IO_WriteOnly); QDataStream out(&file); out.setVersion(5); out << (Q_UINT32) 0x98c58f26; EmployeeList::iterator it; for ( it = list.begin(); it != list.end(); ++it ) out << *it; //out << (*it).surname() << ", " << //(*it).forename()<< " earns " << //(*it).salary() <<"\n"; file.close(); return 0L; }
____________________________________________________ Want to buy your Pack or Services from MandrakeSoft? Go to http://www.mandrakestore.com Join the Club : http://www.mandrakeclub.com ____________________________________________________