728x90
반응형
1. Map을 활용한 방법
#include <iostream>
#include <map>
#include <functional>
// 명령을 나타내는 enum 클래스
enum class Command {
Start,
Stop,
Pause,
Resume
};
// 명령에 따른 함수를 매핑하는 맵
std::map<Command, std::function<void()>> commandMap;
int main() {
// 각 명령에 대한 함수를 맵에 등록
commandMap[Command::Start] = { std::cout << "시작합니다." << std::endl; };
commandMap[Command::Stop] = { std::cout << "중지합니다." << std::endl; };
commandMap[Command::Pause] = { std::cout << "일시정지합니다." << std::endl; };
commandMap[Command::Resume] = { std::cout << "재개합니다." << std::endl; };
// 사용자로부터 명령 입력 받기
int commandInput;
std::cin >> commandInput;
Command userCommand = static_cast<Command>(commandInput);
// 맵을 사용하여 해당 명령의 함수 실행
if (commandMap.find(userCommand) != commandMap.end()) {
commandMapuserCommand;
} else {
std::cout << "알 수 없는 명령입니다." << std::endl;
}
return 0;
}
2. 함수 포인터를 활용한 방법
#include <iostream>
// 함수 포인터를 위한 타입 별칭 정의
using FunctionPtr = void (*)();
// 실행할 함수들
void Start() {
std::cout << "시작합니다." << std::endl;
}
void Stop() {
std::cout << "중지합니다." << std::endl;
}
void Pause() {
std::cout << "일시정지합니다." << std::endl;
}
void Resume() {
std::cout << "재개합니다." << std::endl;
}
// 함수 포인터를 사용하여 함수 실행
void ExecuteCommand(FunctionPtr command) {
command(); // 함수 포인터를 통해 함수 호출
}
int main() {
FunctionPtr commands[] = {Start, Stop, Pause, Resume};
int commandIndex;
// 사용자로부터 명령 번호 입력 받기
std::cout << "명령을 선택하세요 (0: 시작, 1: 중지, 2: 일시정지, 3: 재개): ";
std::cin >> commandIndex;
// 입력된 번호에 해당하는 명령 실행
if (commandIndex >= 0 && commandIndex < 4) {
ExecuteCommand(commands[commandIndex]);
} else {
std::cout << "알 수 없는 명령입니다." << std::endl;
}
return 0;
}
728x90
반응형
'C++' 카테고리의 다른 글
[C++] 컨텍스트 스위치란 (0) | 2024.03.17 |
---|---|
[C++] 멀티 스레드, 멀티 프로세스 (1) | 2024.03.17 |
[CPP] 분할 구현 (0) | 2024.03.15 |
[C++] Merger Sort 병합 정렬 (0) | 2024.03.15 |
[C++] Quick Sort 퀵 정렬 (1) | 2024.03.15 |