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
[57482] protected 부분을 엑세스하시려면 property를 만드시면 됩니다.
조대현.Clau [] 864 읽음    2009-07-06 16:15
1. protected는 private처럼 외부에서 엑세스가 불가능 하므로 __property를 선언하셔서 읽으시면 됩니다.
class TDBClientSocketThread : public TThread
{
protected:
	TPROC_INFO *			mProcInfo;
	bool					mRunning;
	SOCKET 					mSocket;
public:
	__property TPROC_INFO* 	ProcInfo = { read = mProcInfo, write = mProcInfo };
	__property bool 				Running = { read = mRunning, write = mRunning };
	__property SOCKET 			Socket = { read = mSocket, write = mSocket };


2. public에 선언하셔도 됩니다만 구조적으로는 1번이 바람직 합니다^^
class TDBClientSocketThread : public TThread
{
public:
	TPROC_INFO *			mProcInfo;
	bool					mRunning;
	SOCKET 					mSocket;


3. protected 함수를 직접 엑세스하시려면 2번처럼 public에 선언하시면 되는데, 역시 구조적으로 바람직 하지 않습니다.
클래스 자체가 그렇게 설계되어 있다면 어떠한 이유가 있을건데요. 그래도 엑세스 하시겠다면 public에 함수 하나 더 만들어서 호출만 연결시켜주면 됩니다.

public:
  void CloseSocketLink();

TDBClientSocketThread ::CloseSocketLink()
{
  CloseSocket();
}

Terry 님이 쓰신 글 :
: 두 폼간에 함수 호출은 단순히 헤더파일 인클루드 시키면 되었는데요
: 메인 폼에서 그냥 유닛에있는건 안되네요...
:
:
: //---------------------------------------------------------------------------
: 
: #ifndef DBClientSocketThreadH
: #define DBClientSocketThreadH
: #include 
: #include 
: #include "Define.h"
: //---------------------------------------------------------------------------
: class TDBClientSocketThread : public TThread
: {
: protected:
: 	TPROC_INFO *			mProcInfo;
:     bool					mRunning;
:     SOCKET 					mSocket;
: protected:
: 	virtual void __fastcall DoTerminate(void);
: 	virtual void __fastcall Execute(void);
: protected:
: 	bool 					WaitEvent(int Sec, int USec);
:     void					CloseSocket();
:     bool					ConnectSocket();
:     bool					SendPacket(char * Buf, int Len);
: public:
: 	__fastcall TDBClientSocketThread(TPROC_INFO * ProcInfo);
: 	__fastcall ~TDBClientSocketThread();
: public:
: 	void					StopThread();
:     bool					IsConnected() 		{return mSocket != INVALID_SOCKET;};
:     bool					SendStatus(bool Direct = false);
: 	bool 					SendTermConnection(DWORD TermID, AnsiString IPAddress);
: };
: //---------------------------------------------------------------------------
: #endif
: 
: 

:
: 유닛 헤더파일입니다. 저기있는 함수나 값들을 메인폼에서 어떻게 해야 제어할수 있죠??

+ -

관련 글 리스트
57468 메인 폼에서 유닛에있는 함수 어떻게 실행하죠? Terry 768 2009/07/03
57482     protected 부분을 엑세스하시려면 property를 만드시면 됩니다. 조대현.Clau 864 2009/07/06
57490         Re:답변 감사드립니다 이번에도 많이 배워갑니다^^ Terry 833 2009/07/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.