2013-05-23 3 views
0

Следующий код в случае «Y» или «y» вызывается функция randStats(), и после того, как функция возвращается, мне нужно, чтобы она выполняла код под вызовом функции в случае коммутатора , но это не так. Это может быть проблемой компилятора, поскольку в прошлом у меня были проблемы с Codeblocks, где новый код, кажется, полностью игнорируется, а другой - нет.Код не выполняется после функции внутри коммутатора

Вот паста самой функции, которая вызывается ниже переключателя: http://ideone.com/Rx3Ig9

Примечание: Насколько я могу сказать, что это не проблема кодирования, это проблема с кодом полностью игнорируется.

// newchar.cpp 

#include <iostream> 
#include "player.h" 
#include "randstats.h" 
#include "newchar.h" 

int new_character() 
{ 

std::cout << "\n\nCreating new character..."; 
std::cout << "\n\nClaim an alias for your character: "; 
std::cin >> player.alias; 

char x; 

std::cout << "You have chosen " << player.alias << "\n"; 
std::cout << "Is this correct? [y/n]: "; 
std::cin >> x; 

switch(x) 
{ 
case 'y': 
case 'Y': 
    std::cout << "\nInserting " << player.alias << " into this hapless world of strife..."; 
    std::cout << "\n\nRandomizing stats...\n" << std::endl; 
    randStats(); // randomize stats 

    //print new character information 
    std::cout << "Alias: " << player.alias << "Level: " << player.current_level << std::endl; 
    std::cout << "Stats: " << player.str << "STR " << player.dex << "DEX " << player.con << "CON " << player.intel << "INT " << player.wis << "WIS " << player.cha << "CHA " << std::endl; 
    break; 
case 'n': 
case 'N': 
    std::cout << "Aborting...\n"; 
    break; 
default: 
    break; 

} 

//update the database 
//do it 


return 0; 
} 
+0

Вы уверены, что 'randStats()' возвращается? Это похоже на единственное объяснение. – Barmar

+0

В файле randstats.cpp я связан с ideone здесь http://ideone.com/Rx3Ig9 –

+0

См. Функции 'std :: toupper' и' std :: tolower', поэтому вы можете преобразовать в один случай и сделать 2 сравнения вместо 4. –

ответ

1

линии 49 в randstats.cpp является

// remaining_points - x; 

Это должно быть раскомментирована и фиксируется как:

remaining_points -= x; 

с знаком равенства.

В противном случае он будет навсегда.

+0

Он никогда не «зацикливался навсегда» для меня. –

+0

А-ха. Кажется, потому что я вызвал функцию из коммутатора, а затем вызвал другую функцию из коммутатора внутри вызываемой функции, он никогда не возвращается к исходному коммутатору и выполняет какой-либо код после него ... Я был введен в заблуждение кем-то, что кажется. Я удалил вызов функции с помощью переключателя, который находится внутри вызываемой функции, и теперь он просто выполняет код под всеми вызовами функций. Если это имеет смысл. Поэтому имейте в виду, что он не возвращается к коммутатору и ничего не делает под вызовом функции. –

Смежные вопросы