지금까지 공부한 내용을 바탕으로 작은 프로젝트를 만들었다
요구사항
준비한 프로그램의 구조는 다음과 같다
각 헤더파일에는 값을 저장하는 클래스들이 있고,cal폴더의 cc파일에서 헤더를 포함하여 계산을 진행한다.
메인에서는 숫자를 입출력 할수있는 코드와 메뉴 항목을 추가했다.
예시로 들 add 함수(add.cc파일)
계산의 동작부이며 더하기 계산을 담당한다
add.h파일에서는 다음과같이 Add클래스를 생성하여 값을 저장해주고 setValue를 통해 메인에서 계산을 진행하게끔 해준다.
#include <cstdlib>
#include <iostream>
#include "logic/logic.h"
using namespace std;
char selectMenu();
int main(int argc, char *argv[])
{
Add a;
Sub s;
Mul m;
Div d;
int x, y;
while(1){
cout<<"------ 사칙연산 프로그램 -----"<<endl;
cout<<"두 정수를 입력하세요. : ";
cin >> x >> y;
switch(selectMenu()){
case '1':{
a.setValue(x, y);
cout << "결과 : "<<a.calculate();
}
break;
case '2':{
s.setValue(x, y);
cout << "결과 : "<<s.calculate();
}
break;
case '3':{
m.setValue(x, y);
cout << "결과 : "<<m.calculate();
}
break;
case '4':{
d.setValue(x, y);
cout << "결과 : "<<d.calculate();
}
break;
case 'q' :
return 0;
break;
}
cout << endl;
system("PAUSE");
system("cls");
}
return EXIT_SUCCESS;
}
char selectMenu()
{
char menu;
cout<<"----------------------------------------\n";
cout<<"1.덧 셈\n";
cout<<"2.뺄 셈\n";
cout<<"3.곱 셈\n";
cout<<"4.나 눗 셈\n";
cout<<"q.종 료\n";
cout<<"----------------------------------------\n";
cout<<"메뉴선택 : ";
cin>>menu;
return menu;
}
main.cc파일은 다음과 같은 코드를 가지고있다.
여러 조건중 git에 업로드해야하는 조건도 있었기에
git에 커밋,푸시해가면서 저장하며 여러장소에서 코딩을 진행했다.(회사컴퓨터,집 노트북)
그냥 레포지토리를 하나 더 만들수도 있지만, 기존에 사용하던 레포지토리 내에서 브랜치 만들기를 연습해보기 위해 브랜치를 따로 생성한 후 git으로 github에 연동시켜 업로드도 시켜보았다.
빌드는 cmake로 진행했으며 새로운 명령어인 source_group을 사용해보기 위해 main에서 참조할 cc파일들을 source_group명령어를 통해 참조시켜줬다
(main.cc를 빌드할 CMakeLists.txt파일)
중간에 오류가 발생했다.
cmake에서 참조시켜준 각 기능들과 함수가 undefined reference로 참조되었다.
읽어보니 cc파일에서 숫자를 입력받아 a 와 b를 각각 x와 y로 변환시켜주고 계산을 진행해 리턴시키는 코드가 메인에서 링킹이 안되는 문제였다.
------------------------------------2023.01.06