equals 연산자를 오버로드하여 클래스의 전체 복사본을 만들려고합니다. 그러나 작동하지 않는 것 같습니다. 어떤 도움을 주셔서 감사합니다! 할당 연산자 오버로드가있는 클래스의 딥 복사
이
내가 복사하려고하는 클래스입니다 :class CMap {
public:
int m_nWidth;
int m_nHeight;
char* m_pData;
void setDimensions(int nWidth, int nHeight);
void operator = (CMap* rhs);
};
이 내 오버로드 된 연산자 :
CMap& operator = (const CMap&rhs)
{
if (this == &rhs)
return *this;
memcpy(this -> m_pData, rhs.m_pData, sizeof(char)*rhs.m_nWidth*rhs.m_nHeight);
return *this;
}
이 메인에있는 함수 호출이다. myMap은 CMaps의 배열입니다.
CMap tempMap;
tempMap.setDimensions(myMap[0].m_nHeight, myMap[0].m_nWidth);
tempMap.m_pData = myMap[0].m_pData;
"작동하지 않는 것 같습니다."는 유익하지 않습니다. –
@ Joachim Isaksson in setDimensions 저는 메모리를 할당합니다. 불행하게도 나는 그 방법으로 유지해야한다. – user1816546
@ H2CO3by는 작동하지 않는다. 나는 깊은 복사를 수행하지 않는다는 것을 의미한다. – user1816546