I made a class with its constructors, initializers, methods, everything... but a friend function doesn't seem to work fine.
Something in the "exception-detection" part went wrong, and the compiler isn't throwing any errors.
I would really appreciate if someone could take a look at it. Especially in the friend void function Create() on player.cpp
http://www2.netexplora.com/shaomongo/O2Class.zip
Here's the implementation of Create(player nuevo)
Code://------------------------------------------------------------------------------ //Custom initializer //------------------------------------------------------------------------------ void Create(Player nuevo) { inicio: bool nickRight = false; bool levelRight = false; bool sexRight = false; bool experienceRight = false; bool errorNick1 = false; bool errorLevel1 = false; bool errorLevel2 = false; bool errorSex1 = false; bool errorSex2 = false; bool errorSex3 = false; bool errorExperience1 = false; bool errorExperience2 = false; char *nickTemp; char *experienceTemp; char *levelTemp; char *sexTemp; cout<<"----------New player creation----------"<<endl; cout<<"Fill the following fields as required"<<endl; //------------------------------------------------------------------------------ //Nickname //------------------------------------------------------------------------------ nickname: cout<<"Nickname: "; cin>>nickTemp; if((strlen(nickTemp)) > 10) { errorNick1 = true; } if(errorNick1 = true) { cout<<"Error: Invalid nickname (10 characters max length)"<<endl; nickTemp = NULL; nickRight = false; } if(nickRight = false) { goto nickname; } else { nuevo.setNickname(nickTemp); } //------------------------------------------------------------------------------ //Level //------------------------------------------------------------------------------ level: cout<<"Level: "; cin>>levelTemp; if(strlen(levelTemp) > 3) { errorLevel1 = true; } for(int verificadorlevel = 0; verificadorlevel < 2; verificadorlevel++) { if(!(isdigit(levelTemp[verificadorlevel]))) { errorLevel2 = true; } } if(errorLevel1 = true) { cout<<"Error: Invalid level (3 digits max length)"<<endl; levelTemp = NULL; levelRight = false; } if(errorLevel2 = true) { cout<<"Error: Invalid level (only numbers allowed)"<<endl; levelTemp = NULL; levelRight = false; } if(levelRight = false) { goto level; } else { int levelFinal = atof(levelTemp); nuevo.setLevel(levelFinal); } //------------------------------------------------------------------------------ //Sex //------------------------------------------------------------------------------ sex: cout<<"Sex(m/f): "; cin>>sexTemp; if(strlen(sexTemp) > 1) { errorSex1 = true; } if(isdigit(sexTemp[0])) { errorSex2 = true; } if( sexTemp[0] != 'm' || sexTemp[0] != 'M' || sexTemp[0] != 'f' || sexTemp[0] != 'F' ) { errorSex3 = true; } if(errorSex1 = true) { cout<<"Error: Invalid sex (1 character max length)"<<endl; sexTemp = NULL; sexRight = 0; } if(errorSex2 = true) { cout<<"Error: Invalid sex (only letters allowed)"<<endl; sexTemp = NULL; sexRight = false; } if(errorSex3 = true) { cout<<"Error: Invalid sex (unknown sex: "<<sexTemp[0]<<" )"<<endl; sexTemp = NULL; sexRight = false; } if(sexRight = false) { goto sex; } else { nuevo.setSex(sexTemp[0]); } //------------------------------------------------------------------------------ //Experience //------------------------------------------------------------------------------ experience: cout<<"Experience: "; cin>>experienceTemp; if(strlen(experienceTemp) > 10) { errorExperience1 = true; } for( int verificadorexp = 0 ; verificadorexp < 9 ; verificadorexp++) { if( !(isdigit(experienceTemp[verificadorexp])) ) { errorExperience2 = true; } } if(errorExperience1 = true) { cout<<"Error: Invalid experience (10 digits max length)"<<endl; experienceTemp = NULL; experienceRight = false; } if(errorExperience2 = true) { cout<<"Error: Invalid experience (only numbers allowed)"<<endl; experienceTemp = NULL; experienceRight = false; } if(experienceRight = false) { goto experience; } else { int experienceFinal = atof(experienceTemp); nuevo.setExperience(experienceFinal); } } //------------------------------------------------------------------------------
And here's the output
As you see, it says "Invalid nickname", and the nick just has 4 characters.Code:----------New player creation---------- Fill the following fields as required Nickname: test Error: Invalid nickname (10 characters max length) Level:
And if i write something in Level and hit enter, windows throws an exception.
Thanks in advance



LinkBack URL
About LinkBacks
.


