메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 C++ 프로그래밍

뇌를 자극하는 C++ 프로그래밍 질의응답 게시판입니다.

분할 컴파일 문제입니다.

2007-11-04

|

by 김성원

2827

안녕하세요.

책보고 분할 컴파일을 따라 하려고 했는데 자꾸만 오류가 생겨서 질문드립니다.


소스는 제가 학교에서 수업받는 책에 나오는 연습문제 푼거고요.


분할 컴파일은 이번학기 텀프로젝트에 적용할려고 합니다.


--------------------------------- t1.h ------------------------------------------------


#include
using namespace std;
class building
{
protected: // 상속 받는 클래스외 접근을 차단
int floor, room;
float area;
building(float a, int f, int r)
{
  area = a;
  floor = f;
  room = r;
}
};


--------------------------------- t2.h ------------------------------------------------


#include
using namespace std;
#include "t1.h"
class house : public building // building 클래스 상속
{
private:
int bedroom, bathroom;
public:
// house 와 building 클래스 생성자
house(int bed, int bath, float a, int f, int r) : building(a, f, r)
{
  bedroom = bed;
  bathroom = bath;
}
void show()
{
  cout << "이 집은 총 " << area <<"평방미터이고,\n";
  cout << "건물은 총 " << floor <<" 층에 방 수는 "<< room << "개이고,\n";
  cout << "침실은 " << bedroom << " 개, 욕실은 " << bathroom << " 개 이다.\n";
}
};


--------------------------------- t3.h ------------------------------------------------


#include
using namespace std;
#include "t1.h"
class office : public building // building 클래스 상속
{
private:
int fireExtinguisher, phone;
public:
// office 와 building 클래스 생성자
office(int fireEx, int ph, float a, int f, int r) : building(a, f, r)
{
  fireExtinguisher = fireEx;
  phone = ph;
}
void show()
{
  cout << "이 사무실은 총 " << area <<"평방미터이고,\n";
  cout << "건물은 총 " << floor <<" 층에 방 수는 "<< room << "개이고,\n";
  cout << "소화기는 " << fireExtinguisher << " 개, 전화기는 " << phone << " 개 이다.\n";
}
};


--------------------------------- test.cpp ------------------------------------------------


#include
using namespace std;
#include "t1.h"
#include "t2.h"
#include "t3.h"


int main()
{
house home(4, 2, 35.9, 2, 4);
office of(6, 10, 50.2, 3, 10);
home.show();
cout << endl;
of.show();
return 0;
}


--------------------------------------------------------------------------------------------


많은수의 책에서도 학교에서 배울때도 분할컴파일은 하나도 배우지를 않아서 원인을 못 찾겠네요.


계속 t1.h 파일에서 에러가 발생하는데 원인을 알고싶습니다.


그럼, 부탁드립니다. ^^

ps. 이미 저자분께 답변을 받았지만 질문 공유를 부탁(?) 받아서 답변과 함께 올립니다. ^-^
감사합니다.


----------------------- 이 하    답 변    내  용  -------------------------------------------

안녕하세요 이현창입니다.


아마도 t1.h 가 여러 번 포함되서 생기는 문제일 것 같습니다.
상황이 안되서 확인해보지는 못했지만요 ^^


비주얼 스튜디오라면  헤더파일의 제일 꼭대기에
#pragma once
를 추가해 주시면 되구요.


아니면 헤더의 제일 꼭대기에
#ifndef T1_H
#define T1_H
헤더의 제일 끝에
#endif


를 넣어주시면 될듯 합니다.
제 책에도 관련된 설명이 나와 있을 거구요, 원리에 대해서는
분량상 설명하지 않았던 것 같네요. ^^


어쨌든, 결국은 헤더 파일이 여러 번 포함되지 않게 하기 위해서
위와 같은 추가 코딩이 필요한 겁니다.


감사합니다. ^^


p.s. 다른 분께 여쭤볼 때라도, 어떤 에러가 나는지 캡쳐해서 함께
보내주시면 더 빠르고 자세하게 도움을 받으실 수 있을 것 같습니다. ^^
댓글 입력
자료실