C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[46397] Re:Re:enum 타입의 사용법???
무식한흑태자 [incu76] 1683 읽음    2006-09-01 09:53
아.. 그럼 int 로도 string으로도 할수 없었던건.. TComError 이 아니라 TComErrors 클래스로 선언된 Errors 라서
에러가 발생했었다는 거네요..
감사합니다. 문제는 해결 됐구요..
컴파일러가 좀 속을 썩게 하네요..
보통 객체가 포인터로 선언되면 -> 이런 연산자를.. 일반이면 . 연산자를 사용한다고 알고 있는데
Errors 뒤에 . 연산자를 썼을때 처음에 에러가 나더군요..

그런데 왜 공부맨님이 가르쳐주신대로 한번 사용하고 난 뒤에는 갑자기 연산자들이 막 튀어나올까요..ㅠ_ㅠ
분명히 에러가 났었는데..
그 왜 있잖아요.. . 연산자나 -> 연산자를 썼을때 뜨는 멤버함수나 변수들..
그게 안 떠서 얘는 클래스가 아니구나..라고 생각을 했던건데..ㅜ_ㅜ

아뭏든 고맙습니다. 공부맨님 덕분에 다음엔 같은 문제로 고민하지 않을것 같네요 ^^


공부맨 님이 쓰신 글 :
: enum 타입은 아시는바와 별 다를바가 없습니다. 궁금해하시는 데이터 타입은 'Set' 인거 같은데
:
: : #pragma option push -b-
: : enum TComError { ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull };
: : #pragma option pop
: :
: : typedef Set<TComError, ceFrame, ceTxFull>  TComErrors;
:
: 여기서 보시면 enum 타입인 TComError 를 이용하여 TComErrors 라는 Set 타입의 데이터를 정의 하고 있습니다.
: Set을 소스 추적해서 보시면 template를 이용해서 구현된 클래스인걸 확인하실수 있구요.
: 델파이에서는 set 이라는 데이터 형식이 존재하는데 BCB에서 그것과 호환되기 위해 만들어진 클래스 같습니다.
:
: 개념적으로 보면...전자제품 부품들중에(컴퓨터 메인보드라던지) 딥스위치 있죠?
: 그거 생각하시면 됩니다.
: 위 TComErrors을 예로 들면
: ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull
: 등등의 이름이 붙은 스위치들이 있다고 보시구요.
: ComPort->Events >> evRxChar 라고 했으면 evRxChar 라는 스위치를 Off로 내린것으로 생각하시고
: ComPort->Events << evRxChar 은 반대로 스위치를 On으로 올린 것으로 생각하시면 됩니다.
: 현재 스위치가 올라가 있는지 내려가 있는지 확인은
: ComPort->Events.Contains(evRxChar) 로 하시면 true 또는 False가 리턴 됩니다.
:
: p.s.
: 저같은경운 BitField 대신 종종 사용하곤 합니다.
:
:
: 무식한흑태자 님이 쓰신 글 :
: : 얼마전에 질문했었는데 답변이 되질 않아 다시 한번 질문 드립니다.
: : 아래 소스..라고 하긴 좀 그렇지만 아뭏든 보시면 TComError의 선언부입니다.
: : ComPort에서 사용되는 건데..
: : enum 타입같은데.. 보통 C에서 enum type 같은 경우 int 타입과 그냥 호환되게 사용해도 되는것으로 아는데..
: : 그러니까 switch(enum type) 이런식으로 사용해도 되는 것으로 알고 있었습니다
: : 그런데 TComError 타입은 그렇게도 사용이 되질 않고.. 저는 클래스로 되어 있어서 제가 내부 멤버함수나 변수를
: : 제대로 끌어내지 못하는 거겠거니 했는데, 아래를 보면 그렇지는 않은것 같고..
: : 아직 C에 대한 내공이 부족해서 enum 타입의 사용법을 잘 모르는거라고도 생각해서 enum 타입에 대해서
: : 찾아보기도 했습니다.
: : 전에 ComPort의 Events 프로퍼티에 관해서 물어봤을때도 보니까.. TComEvent도 같은 타입이더군요
: : 그때 프로퍼티 set 하는 법을 물어보니
: : ComPort->Events>>evRxChar 이런식으로 상태값을 true, false로 바꾼다고 하더군요.
: : 물론 그렇게 해서 에러 안나고 컴파일은 잘되고 있습니다. 아직 테스트를 못해서 결과는 확인 못했지만..
: : 아마 될거라고 생각합니다.
: : 그런데 왜 이렇게 되는것인지도 모르겠고.. 이건 set하는 법인데 그렇다면 evRxChar이 가진 값이 true인지 false인지
: : 어떻게 확인할 수 있는건지??? 이런것도 알고 싶은데..
: : C++책을 찾아보고, 빌더 책을 찾아보고, 도움말을 아무리 뒤적거려 봐도 해답을 찾을수가 없습니다
: : 물론 이곳 게시판도 저 나름대로 이런 저런 키워드 넣어서 열심히 뒤져보고요..
: : 이거 찾는데 이틀 꼬박 걸리고 있습니다. 좀 도와주세요.. ㅜ_ㅜ
: :
: :
: : #pragma option push -b-
: : enum TComError { ceFrame, ceRxParity, ceOverrun, ceBreak, ceIO, ceMode, ceRxOver, ceTxFull };
: : #pragma option pop
: :
: : typedef Set<TComError, ceFrame, ceTxFull>  TComErrors;

+ -

관련 글 리스트
46393 enum 타입의 사용법??? 무식한흑태자 1701 2006/09/01
46402     Re:enum 타입의 사용법??? enum은 Contains함수를 이용해서... 장성호 2054 2006/09/01
46396     Re:enum 타입의 사용법??? 공부맨 1919 2006/09/01
46397         Re:Re:enum 타입의 사용법??? 무식한흑태자 1683 2006/09/01
46394     Re:enum 타입의 사용법??? 아루스 1296 2006/09/01
46395         안되네요...다른 방법은?? ;;; 무식한흑태자 1034 2006/09/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.