|
어쩌면 CPort라는 컴포넌트에 국한된 문제는 아니지 싶습니다.
일단 CPort의 포터 번호를 설정하려면 ComPort->Port = "COM1"; 이런식으로 해주어야 하고..
이렇게 하려면 헤더 파일 가장 위에 #undef SetPort 라는 문장을 추가해야 합니다.
이렇게 쓰면 아무 문제가 없습니다.
그런데 TComPort를 상속 받는 임의의 클래스를 만들고 멤버 함수를 이용해서 포트를 설정하려고 합니다.
ComPortConfig(AnsiString ComPort, TBaudRate BaudRate) 라는 함수를 선언하고
this->Port = ComPort;
this->BaudRate = BaudRate;
라고 정의해주면 SetPortA를 참조할 수 없다는 링크 에러가 발생합니다.
이를 해결하려면 TComPort를 public으로 상속 받아 외부에서 직접 설정해야 하더군요.
저는 ComPort의 함수들은 다 숨겨두려고 하는데 말이죠.
그래서 헤더파일을 살펴보니 Port라는 속성(Property)은 SetPort라는 함수를 호출해서 쓰기를 하더군요.
SetPort라는 함수는 TCustomComPort에서 private function으로 선언되어있습니다.
링크 에러가 발생하는 이유도 모르겠고.
#undef SetPort라는 문장이 어떤 역할을 하는지도 잘 모르겠네요.
어딜 봐도 #define SetPort라는 건 안 보이던데...
이를 설명해주실 분이 안계신가요?
|