[t:/]$ 지식_

C에서 C++가져다 쓰기

2010/11/08

나는 C 개발자 C++ 잘 몰름..

원칙적으로는 좋지 못한 방법 같다. namespace나 extern C, 아규먼트 교환 규칙등..

어쩌다보니 쓰던 C 모듈을 끌어오게 된다. 그러다보니 C++쪽 다이얼로그 클래스의 멤버를 접근해야 하는데, LPVOID 등으로 다이얼로그의 인스턴스를 전달하는 방법이 있다.

사실 이 시점에서 OO는 깨진 셈이다. 어쨌든 나는 C개발자고 프로젝트는 C지향 프로젝트다; -_-;

LPVOID형으로 다이얼로그 인스턴스를 전달하는 방법은 보통 이렇다. 쓰레드 생성시에 주로 쓴다.

  1. 다이얼로그 클래스에서의 선언은 다음과 같다.

pThread = AfxBeginThread((AFX_THREADPROC)rcv_thread , (LPVOID)this);

  1. C쪽에서는 이렇게 받아 쓴다.
DWORD rcv_thread(LPVOID pParam)
{
    CADGDlg *parent_dlg = (CADGDlg *)pParam;

이제 pParam-> 형식으로 다이얼로그 클래스의 멤버를 자유롭게 끌어쓸 수 있게 됐다.

귀찮으면 이렇게 해도 된다 ㅠ.ㅠ

CADGDlg *gpParent;

BOOL CADGDlg::OnInitDialog()
{
 ...
    gpParent = this;

gpParent는 전역변수이므로 이제 C 모듈 쪽에서 아무렇게나 불러 쓸 수 있다.

좋지 않다.









[t:/] is not "technology - root". dawnsea, rss