본문 바로가기

2009/0226

oop 프로젝트 8단계 중... 8단계중 객체의 포인터를 저장하기 위한 용도로 사용할 수 있는 클래스의 선언부이다. 일명 "컨테이너(Continer)클래스" 라고 부른다. 달리 표현하면 "저장소 클래스" 정도가 되겠다(배열 클래스와는 성격이 조금 다르다.) #ifdef _CONTAINER_H_ #define _CONTAINER_H_ #include "Account.h" typedef Account* Element; class Container { private: Element* arr; int length; int aIndex; public: Container(int len=50); ~container(); void Insert(Element datea); Element Remove(int idx); Element GetItem(int.. 2009. 2. 12.
조건부 컴파일 #if #elif #else #endif 전처리 지시사 #if #elif #else #endif 는 컴파일러 (정확히 이야기하면 전처리기)에게 조건을 제시하는 경우에 사용된다. 사용되는 형식 -------------------------- #if CONDITION1 expression1 #elif CONDITION2 expression2 #else expression3 #endif --------------------------- 위 형식은 다음과 같은 내용을 컴파일러에게 요구하는 것이다. "CONDIONT1이 만족되면 expression1을 , CONDITION2가 만족되면 expression2를 이도 저도 아니면 expression3를 컴파일해라" if ~ else if 문장과 상당히 유사한 형태를 지니고 있음을 알 수 있다. 다만 위의 문.. 2009. 2. 11.
type redefinition 오류 해결법 C나 C++ 프로그램을 짜다보면 이런 저런 해더 파일을 인클루드 하게 되고 그러다보면 한번씩 'struct' type redefinition 이나 'class' type redefinition 어쩌구 하면서 에러가 발생할 때가 있다. 이런 경우 에러 내용 그대로 타입이 재정의 되었다는 얘기인데 이것은 일반적으로 아래 그림과 같은 경우에 발생한다. 그림에서 처럼 A.h 파일에 어떤 클래스나 타입을 정의해 놓았을 때 그 타입을 이용하기 위해 B.h 와 C.h에서 A.h를 인클루드하게 되고 D.c에서는 B.h와 C.h가 필요해서 둘을 인클루드하게 된다. 이런 경우 A.h 에서 정의한 타입을 D.c에서는 같은 내용을 두번 사용하게 되는 것이므로 이로 인해서 type redefinition이 발생하는 것이다. C.. 2009. 2. 11.
배열의 인덱스 연산자 오버로딩 이번에 오버로딩 할것은 배열의 요소에 접근할 때 사용되는 [] 연산자이다. 이는 다른 연산자들과 달리 피연산자가 연산자 안으로 들어가게 된다.(예: arr[10]). arr[i] = > arr.operator[](i) 객체를 저장할 수 있는 배열 클래스를 정의 할 수 도 있 다! ++++++ 대입 연산자의 오버로딩 ++++++ A a =b ; --> A a(b) => 복사 생성자 +_+ A a; A b; a=b; -> a(b) ==> 이런건 존재하지 않는다 -_- 복사생성자는 객체 생성시에 하는것이 복사생성자이다 대입연산이 이루어진게 같기는 하나 전혀 다른 의미이다! a.operator=(b) => 요러코롬 해석이 됨...ㅋㅋ 오버로딩된 대입 연산자를 제공하지 않으면, 디폴트 대입 연산자가 제공된다. 이.. 2009. 2. 10.