[C++]명품 C++ 프로그래밍 실습문제 6장 8번
[C++]명품 C++ programming 실습문제 6장 8번
#include <iostream>
#include <string>
using namespace std;
void f();
class Trace{
static string *s1;//tag 정보 저장 //static 선언하면 전역공간에서 구현을 간략히 해줘야 풀수가 있음
static string *s2;//내용 정보 저장
static int num;
public:
static void put(string tag, string imformation){
s1[num] = tag;
s2[num] = imformation;
num++;
}
static void print(string tag){
if( tag == "f()" ){
cout << "-----f() 태그의 Trace 정보를 출력합니다-----" << endl;
for(int k=0; k<num; k++){
cout << s1[k] << ": " <<s2[k] <<endl;
}
}
return ;
}
static void print(){
cout << "-----모든 trace 정보를 출력합니다.-------" << endl;
for(int k=0; k<num; k++){
cout << s1[k] << ": " <<s2[k] <<endl;
}
}
};
string *Trace::s1 = new string [100];//tag 정보 저장 이코드의 의미 :포인터변수에 새로운 STRING공간 100칸을 할당을 하는 코드이다.
string *Trace::s2 = new string [100];//내용 정보 저장 이코드의 의미 :포인터변수에 새로운 STRING공간 100칸을 할당을 하는 코드이다.
int Trace::num=0;
//위의 3줄의 코드처럼 STATIC을 클래스에서 쓴경우라면 클래스 외부에서 따로 구현을 해줘야 그 STATC MEM들을
//쓸수가 있다.
int main(){
Trace::put("main()","프로그램을 시작합니다");
f();
Trace::put("main()","종료");
Trace::print("f()"); // 태그를 가진 디버깅 정보를 출력한다
Trace::print();
return 0;
}
void f(){
int a,b,c;
cout << "두개의 정수를 입력을하세요>>";
cin >> a >> b;
Trace::put("f()","정수를 입력을 받았음"); //클래스 Trace의 함수를 쓸려면 클래스명::함수를 쓰면 접근이 가능하다.
c=a+b;
Trace::put("f()","합을 계산");
cout << "합은 " << c << endl;
}
명품 C++ 프로그래밍실습문제/연습문제 /C++
'C++' 카테고리의 다른 글
[C++] 명품 C++ 프로그래밍 실습문제 7장 오픈챌린지/openchallenge (0) | 2023.01.11 |
---|---|
[C++] 명품 C++ 프로그래밍 실습문제 6장 9번 (0) | 2023.01.10 |
[C++] 명품 C++ 프로그래밍 실습문제 6장 7번 (0) | 2023.01.10 |
[C++] 명품 C++ 프로그래밍 실습문제 6장 6번 (0) | 2023.01.10 |
[C++] 명품 C++ 프로그래밍 실습문제 6장 4번 (0) | 2023.01.10 |