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
Code:
----------New player creation----------
Fill the following fields as required
Nickname: test
Error: Invalid nickname (10 characters max length)
Level:
As you see, it says "Invalid nickname", and the nick just has 4 characters.
And if i write something in Level and hit enter, windows throws an exception .
Thanks in advance