예를 들어 인자가 한개 달린 생성자만을 갖고 있는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)
{
}
사실 걍 맘편하게 포인터로 하는게 편하긴 편할 거 같다. 근데 걍 이런 방법이 있다는 것만 알아두자~
으헝헝~ 언어를 왔다 갔다 하다보니 너무 햇깔린다.. 하나만 잘해도 벅찰텐데~~~