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
[19524] Re:Re:Re:Re:Re: 저.. 정말... 죄송합니다... 이런 경우에 하니까.. 에러가 나네요..
김백일 [cedar] 643 읽음    2002-06-21 00:16
민인학 님이 쓰신 글 :
: struct port_info {
:         AnsiString PortName;             // char *
:         AnsiString PortWidth;           // int
:         AnsiString PortDir;             // int
:         AnsiString PortType;            // int

          friend bool operator==(port_info& x, port_info& y);
: };

연산자 겹지정(operator overloading)은 멤버함수보다는
일반함수를 friend로 선언하여 정의하는 것이 더 편리합니다.

bool operator==(port_info& x, port_info& y)
{
  return x.PortName == y.PortName
      && x.PortWidth == y.PortWidth
      && x.PortDir == y.PortDir
      && x.PortType == y.PortType;
}

: struct import_file_info {
:         AnsiString EdifFile;             // char *
:         AnsiString InstanceName;         // char *
:         AnsiString EmulationMode;       // int
:         AnsiString Type;                // int
:
:         AnsiString CmdFifoSize;         // int
:         AnsiString ReadFifoSize;        // int
:         AnsiString WriteFifoSize;       // int
:         AnsiString SlaveReadFifoSize;   // int
:         AnsiString SlaveWriteFifoSize;  // int
:
:         AnsiString UseClockType;        // int
:         AnsiString ClockPortName;        // char *
:
:         AnsiString TotalPortCount;      // int   // 포트의 갯수
:
:         vector<port_info> PortInfo;  // 포트 정보

          friend bool operator==(import_file_info& x, import_file_info& y);
: };

bool operator==(import_file_info& x, import_file_info& y)
{
  return x.EdifFile == y.EdifFile
      && x.InstanceName == y.InstanceName
      ... // 중간 생략
      && x.PortInfo == y.PortInfo;
}

이렇게 하면 되지 않나요?

: vector<import_file_info> a, b;
:
: if(a==b) {
: }
:
:
: 이런경우는 operator를 어떻게 작성해 줘야 하죠?...
: 가르쳐 주신대로 했는데 안돼네요... 아이고...
: 아.. 정말 죄송합니다... 흑흑.....
: 제가 언제 한번 술 살께요.. ^^
:
:
: 김백일 님이 쓰신 글 :
: : 민인학 님이 쓰신 글 :
: : : 답변 정말 감사드립니다..
: : : 그런데요.. 궁금한게 있는데요..
: : : int대신에 AnsiString은 안돼나요?
: : :
: : : struct test_type {
: : :   int a;
: : :   int b;
: : :   test_type(int a1, int b1): a(a1), b(b1) {} // 편의를 위해 만든 생성자
: : :   friend operator==(test_type& x, test_type y); // operator==()가 꼭 정의되어 있어야 합니다.
: : : }; // 이렇게 해야 합니다.
: : :
: : :
: : :
: : : 김백일 님이 쓰신 글 :
: : : : vector<T>::operator==()를 쓰기 위해서는
: : : : T::operator==() 가 정의되어 있어야 합니다.
: : : : 이 부분을 맞게 수정했습니다.
: : : : 다시 한번 읽어 보세요.
: : : : http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=19440
: : : :
: : : : 민인학 님이 쓰신 글 :
: : : : : 예로
: : : : :
: : : : : struct {
: : : : : int a;
: : : : : int b;
: : : : : } test1;
: : : : :
: : : : : struct {
: : : : : int a;
: : : : : int b;
: : : : : } test2;
: : : : :
: : : : : vector<test1> a;
: : : : : vector<test2> b;
: : : : :
: : : : : if(a!=b) {
: : : : :      ShowMessage("값이 변경 되었습니다.");
: : : : : } else {
: : : : :      ShowMessage("변경이 되지 않았군요..");
: : : : : }
: : : : :
: : : : : 이런식으로 비교를 할수 있나요?
: : : : : 전에도 이런질문을 올렸었지만... 확실한 답을 얻지 못했습니다..
: : : : : 꼭좀 부탁드립니다... 어떻게 해야 하는지 예제좀 부탁드립니다..
: : : : : 안녕히 계세요.
: : : : :
: : : : : 아래의 링크는 전에 올렸던 질문인데.. 답변을 주신분들입니다..
: : : : : 아래의 답변을 보시고... 답변을 주셨으면 좋겠습니다..
: : : : : 정말 여러분들께.. 미안할 따름입니다..
: : : : : 제가 너무 급해서요.. ^^
: : : : :
: : : : : http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=19439
: : : : :

+ -

관련 글 리스트
19511 [질문] 다시한번.. 벡터간의 비교를 할수 있나요? 민인학 701 2002/06/20
19518     Re: 제가 쓴 글에 실수가 있었네요. 김백일 674 2002/06/20
19521         Re:Re: 제가 쓴 글에 실수가 있었네요. 민인학 620 2002/06/20
19522             Re:Re:Re: 당근 되지요.(냉무) 김백일 618 2002/06/20
19523                 Re:Re:Re:Re: 저.. 정말... 죄송합니다... 이런 경우에 하니까.. 에러가 나네요.. 민인학 627 2002/06/21
19524                     Re:Re:Re:Re:Re: 저.. 정말... 죄송합니다... 이런 경우에 하니까.. 에러가 나네요.. 김백일 643 2002/06/21
19525                         Re:Re:Re:Re:Re:Re: 김백일님.. 에러가 나요... 흑흑... 민인학 832 2002/06/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.