Ok now i'm getting slightly confused, I've defined a difficulty class which should change a few settings of my game.

Code:
class CDifficulty{
public:
	CDifficulty(const char* itsSetting = "",const int nRings = 3):
	  setting(itsSetting),numRings(nRings)
	{}
	CDifficulty(const string& itsSetting,int nRings):
	  setting(itsSetting),numRings(nRings)
	{}
	int setDifficulty(const string itsSetting){
		setting = itsSetting;
		if(setting == "easy"){
			numRings = 3;
			return OK;
		}else if(setting == "medium"){
			numRings = 5;
			return OK;
		}else if(setting == "hard"){
			numRings = 7;
			return OK;
		}else
			return FAILED;
	}
	string getDifficulty(){ return setting; }
private:
	string setting;
	int numRings;
};
The difficulty should determine how many rings there are in the game, set up as follows.

Code:
void createRings(struct gameStruct hanoiGame){
	int i;
	if(hanoiGame.diff->getDifficulty() == "easy"){
		for(i = 3; i>0; i--)
			hanoiGame.A->addRing(i);
	}else if(hanoiGame.diff->getDifficulty() == "medium"){
		for(i = 5; i>0; i--)
			hanoiGame.A->addRing(i);
	}else if(hanoiGame.diff->getDifficulty() == "hard"){
		for(i = 7; i>0; i--)
			hanoiGame.A->addRing(i);
	}
}
The user is able to choose the difficulty from the menu set up, I have the following set of actions defined for this.

Code:
void diffSelect(struct menuStruct hanoiMenus,struct gameStruct hanoiGame){
	int choice = 0;

	cin >> choice;
	switch(choice){
	case 1:
		if((hanoiGame.diff->setDifficulty("easy")) != OK){
			cout << "WE MAY HAVE A PROBLEM";
			break;
		}
	case 2:
		if((hanoiGame.diff->setDifficulty("medium")) != OK){
			cout << "WE MAY HAVE A PROBLEM";
			break;
		}else{
			cout << hanoiGame.diff->getDifficulty();  //TEST PURPOSES
			break;
		}
	case 3:
		if((hanoiGame.diff->setDifficulty("hard")) != OK){
			cout << "WE MAY HAVE A PROBLEM";
			break;
		}
	case 4:
		system("CLS");
		hanoiMenus.mainMenu->showMenu();
		mainSelect(hanoiMenus,hanoiGame);
		break;
	default:
		cout << "Invalid";
	}

}
Now heres the part thats puzzling me, If I were to choose option 2 "medium" then according to my setDifficulty function the number of rings should be 5, but instead it seems to add the same number of rings as hard i.e. 7 instead of 5!!!! Am I missing something blatantly obvious???

Ah I just noticed something, its not just with medium, its with all the options, If I choose easy it sets the number of rings to 7 aswell.

hmmm.... Curioser and Curioser said Alice as she wandered down the rabbit hole.