Monday, 15 September 2014

c++ - Cin parameters to a custom class -



c++ - Cin parameters to a custom class -

i have made custom class, person, holds info persons, job perspective.

class person { char* _name; char* _lname; char* _department; int _age, _salary; public: person(char* name, char* lname, char* department, int age, int salary); person(void); ~person(void); char* getfname(){return _name;}; char* getlname(){return _lname;}; char* getdepartment(){return _department;}; int getsalary(){return _salary;}; friend std::ostream &operator<<(std::ostream &cout, person &person); friend std::istream &operator>>(std::istream& is, person &person); };

what wish accomplish, stream info class, using cin, in form of comma separated char*.

the cin overload:

std::istream &operator>>(std::istream &is, person &person) { char* tmp=""; >> tmp; int i=0; int number=0; char** dataarray=new char*; dataarray[0]=""; while(tmp[i]!= '\0') { if(tmp[i]==',') { number++; dataarray[number]=""; } else dataarray+=tmp[i]; i++; } person._name=dataarray[0]; person._lname=dataarray[1]; person._department=dataarray[2]; person._salary=(int)dataarray[3]; person._age=(int)dataarray[4]; homecoming is; }

however, programme stops, error, at;

>> tmp;

i haven't manipulated istreams @ before, error due faulty reasoning. help appreciated.

you need specify size here:

char** dataarray=new char*;

i think need:

char** dataarray=new char*[5];

you leak memory variable. seem manipulating elements of array if std::string, simple char arrays. need allocate , reallocate them. avoid issues utilize std::vector , std::string. errors have nil operator<< itself.

c++ operator-overloading istream

No comments:

Post a Comment