티스토리 뷰
예를 들어 인자가 한개 달린 생성자만을 갖고 있는CDevice 라는 class가 있다고 했을 때
class CDevice{
public:
CDevice(int a);
};
이 CDevice를 다른 클래스에서 멤버 변수로 사용할려면 어찌 해야 할까?
자바의 경우는 걍
class CObject{
public CDevice mDevice = new Device(n);
public CObject(){
}
};
해주면 되겠지만.. C++(/MFC)은 그렇지 않다..
물론 포인터로 선언해 준다면 저런식으로 해주면 좋겠지만 일반 멤버 변수로 생성자를 가지도록 변수 생성을 할려면 어떻게 해야할까
class CObject{
public:
CDevice m_Device;
CObject();
}
CObject::CObject()
: m_Device(n)
{
}
이렇게.. 호출하는 쪽 생성자에서 : 를 붙이고 호출할 생성자를 붙여주면 된다. 여러개를 할 거면 , 를 붙여서 연결하면 된다.
예를 들어
CObject::CObject()
: m_Device(n), m_Student(strName), CParent(a, b)
{
}
위처럼 해주면 되고, 마지막의 CParent(a, b) 처럼 부모 클래스 생성자의 명시적 호출도 가능하다.
MFC Dialog의 생성자를 보면 이런 식인걸 볼 수 있다.(현재 코딩 하던 소스 그대로 가져와서 변수명 암케나 적었음)
CUC9ADlg::CUC9ADlg(CWnd* pParent /*=NULL*/)
: CDialog(CUC9ADlg::IDD, pParent),
m_Device(GUID_DTN)
{
}
사실 걍 맘편하게 포인터로 하는게 편하긴 편할 거 같다. 근데 걍 이런 방법이 있다는 것만 알아두자~
으헝헝~ 언어를 왔다 갔다 하다보니 너무 햇깔린다.. 하나만 잘해도 벅찰텐데~~~
'Language > C C++' 카테고리의 다른 글
[C++] class를 주고 받을땐 레퍼런스를 사용하자. (0) | 2011.01.28 |
---|---|
[C++] 분기문을 싫어하는 나같은 사람에겐.. (0) | 2010.11.30 |
[C++] RTTI와 vtable 그리고 RTCI (0) | 2010.11.25 |
[C++] dynamic_cast, const_cast, reinterpret_cast, static_cast (2) | 2010.11.24 |
[C++] Algorithm 헤더를 이용한 정렬 (0) | 2010.09.07 |
C++ Vector와 List의 사용 (0) | 2010.09.07 |
UAC 내에서 한시적으로 Admin권한 상승 시키기 (0) | 2010.07.08 |
라이브러리 파일(LIB, DLL) 추가법 (0) | 2010.07.06 |
- Total
- 862,898
- Today
- 21
- Yesterday
- 140
- 리눅스
- 안드로이드
- Troubleshooting
- android
- Quiz
- jni강좌
- gcc
- AWS
- source
- MFC
- NDK
- algorithm
- Python
- linux
- 드라이버
- 프로그래밍
- it
- java
- kering
- Visual C++
- database
- winapi
- API
- db
- 음악
- C
- Cloud
- jni
- driver
- C++