JHB의 프로그래밍 삽질기

[C++] 분기문을 싫어하는 나같은 사람에겐.. 본문

PROGRAMMING/C C++ MFC

[C++] 분기문을 싫어하는 나같은 사람에겐..

roter 2010.11.30 09:54



나는 분기문을 좀 싫어한다 -.-;; 
뭔가 소스가 길어지는 느낌이라서..

예를 들어 단순히 form열기 같은 것을 하는데 switch문으로 길게 늘리는게 뭔가 안깔끔해 보인다.

switch(nIndex)

case: 0

     Form1열기

case: 1

     Form2열기

case: 2

     form3열기


이걸 간결히 해주기 위해 아래처럼 쓸 수 있다.

Form arFrom[3];

 

arForm[0] = Form1;

arForm[1] = Form2;

arForm[2] = Form3;

 

arForm[nIndex].폼열기


이걸 다른 곳에도 응용해 보면, 입력한 숫자에 따라서 함수를 오픈해 줄 때, 분기문을 사용하는 방법도 있겠지만 아래와 같이 해줄 수 도 있다.

#include <iostream>

void func0()
{
	std::cout << "func0" << std::endl;
}

void func1()
{
	std::cout << "func1" << std::endl;
}

void func2()
{
	std::cout << "func2" << std::endl;
}

int main()
{
	int no;
	std::cout << "func no : " << std::endl;
	std::cin >> no;
	
	void (*Func[3])(void);
	Func[0] = func0;
	Func[1] = func1;
	Func[2] = func2;

	Func[no]();

	return 0;
}


물론 펑션포인터를 사용하기 때문에 호출하는 펑션의 파라미터나 타입이 같아야 겠지만..(타입 같은 경우야 parent 를 사용하면 되지만 인자 갯수 같은 경우는 으으음..)


단순히 void 타입에 파라미터 없는 펑션을 연결해 줄 때 저게 뭔가 간결한 느낌이다아아아.. 나만 그런가 -.-;;

Tag
,
0 Comments
댓글쓰기 폼