티스토리 뷰


예를 들어 인자가 한개 달린 생성자만을 갖고 있는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)
{
}

사실 걍 맘편하게 포인터로 하는게 편하긴 편할 거 같다. 근데 걍 이런 방법이 있다는 것만 알아두자~

으헝헝~ 언어를 왔다 갔다 하다보니 너무 햇깔린다.. 하나만 잘해도 벅찰텐데~~~

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함