switch
문은 조건부 분기 문을 제공한다.
void testSwitch(int a)
{
switch(a)
{
case 0:
// do something...
case 1:
// do something...
case 2:
// do something...
}
}
switch
표현시기 값을 평가하고, 각 case
의 값과 같은지 테스트하고 같을 경우 해당 case
안의 코드를 실행한다.
간단하게.. a가 a==0이면 case0부터 case2까지 실행할 수 있는 (break가 있으면 멈춤) 개꿀 함수가 되겠다.
main.cpp를 인자를 받는 식으로 바꾸고 해당 값과 ex05에서 한 것처럼 반복문을 통해 같은 level을 만나면 이후에 주어진 포인터의 level도 연속으로 실행을 한다.
int flag = 0;
for(int i = 0; i < 4; i++)
{
if (levels[i] == level)
{
switch (i)
{
case 0:
(this->*funcs[0])();
flag++;
case 1:
if (i != 1)
std::cout << std::endl;
(this->*funcs[1])();
flag++;
case 2:
if (i != 2)
std::cout << std::endl;
(this->*funcs[2])();
flag++;
case 3:
if (i != 3)
std::cout << std::endl;
(this->*funcs[3])();
flag++;
}
}
}
if (flag == 0)
std::cout << "[ Probably complaining about insignificant problems ]" <<std::endl;