아래와 같이 주석처리 하기전에 아래의 에러가 나구요...
[C++ Error] _algobase.h(429): E2093 'operator==' not implemented in type 'port_info' for arguments of the same type
bool operator==(import_file_info& x, import_file_info& y)
{
return x.EdifFile == y.EdifFile
&& x.InstanceName == y.InstanceName
&& x.EmulationMode == y.EmulationMode
&& x.Type == y.Type
&& x.CmdFifoSize == y.CmdFifoSize
&& x.ReadFifoSize == y.ReadFifoSize
&& x.WriteFifoSize == y.WriteFifoSize
&& x.SlaveReadFifoSize == y.SlaveReadFifoSize
&& x.SlaveWriteFifoSize == y.SlaveWriteFifoSize
&& x.UseClockType == y.UseClockType
&& x.ClockPortName == y.ClockPortName;
// && x.PortInfo == y.PortInfo; <== 요부분을 주석..
}
위의 표시 부분을 주석처리하니까.. 위의 에러는 안나는데요...
주석 처리해놓고...
vector<import_file_info> ImportFilesInfo, ImportFilesInfoBackup;
if(ImportFilesInfo == ImportFilesInfoBackup) {
}
이렇게 하니까... 아래의 에러가 나네요...
[C++ Error] _algobase.h(429): E2093 'operator==' not implemented in type 'import_file_info' for arguments of the same type
제가 C++초보자라 그런지... 잘 ...
죄송하지만.. 다시한번 답변좀 부탁드립니다..
지금까지의 답변 너무 감사드립니다.
김백일 님이 쓰신 글 :
: 민인학 님이 쓰신 글 :
: : 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
: : : : : :