부모클래스를 상속받은 자식 클래스가 클론만들기

ignore444의 이미지

class CMachine
{
public:
CMachine(void);
virtual ~CMachine(void);
virtual int CopyFromNowToBefore(void) = 0;
CMachine *m_pBeforeMachine;
}

class CPC:public CMachine
{
public:
VALUE m_pc31to0;
};

int CPC::CopyFromNowToBefore(void)
{
m_pBeforeMachine = new CPC[1];
((CPC*)m_pBeforeMachine)->m_pc31to0 = this->m_pc31to0;
return 1;
}

이렇게 짜야 에러 없이 돌아가더군요
위에서 ((CPC*)m_pBeforeMachine)->m_pc31to0 = this->m_pc31to0; 이것을 좀 더 깔끔하게 하는 법이 없을까요
아니면 프로그램 전체적으로 자식의 클론을 만들기 쉬운 방법이라던지요

맨처음에는 m_pBeforeMachine)->m_pc31to0 = this->m_pc31to0; 이렇게 했는데
에러가 나더군요.

Trace의 이미지

copy constructor를 쓰면 안 될까요... -_-;;

물어본이의 이미지

new로 객체를 생성하면 복사생성자는 못 쓰지 않나요 ?

kewlbear의 이미지

new로 생성해도 복사생성자를 쓸 수 있습니다.

C c1;
C* p = new C(c1);