이 생성자에서 새 문자열 배열을 만들 때 디버거가 나에게 '나쁜 ptr'을 주지만 내 오버로드 연산자 메서드가 새로운 MyString 객체를 생성 할 때만 ... 혼란 스럽습니다. 여기 <bad ptr> 오버로드 + 연산자
여기MyString::MyString()
{
stringSize = 0;
stringCap = 16;
stringArray = new char[stringCap + 1];
stringArray[0] = '\0';
}
내 오버로드 연산자 방법 여기
MyString operator+(const char* leftOp, const MyString& rightOp)
{
MyString result; // new object used to store result
result.stringSize = strlen(leftOp) + rightOp.stringSize;
// if the string does not fit in the array
if(result.stringSize > result.stringCap)
{
delete[] result.stringArray;
result.stringCap = (result.stringSize + 15) & ~15;
result.stringArray = new char[result.stringCap + 1];
}
strcpy(result.stringArray, leftOp);
strcat(result.stringArray, rightOp.stringArray);
return result;
}
내 생성자 디버거가 너무
MyString::MyString(const MyString& s)
{
stringSize = s.stringSize;
stringCap = s.stringCap;
//stringArray[stringCap + 1];
stringArray = new char[stringCap + 1];
stringArray = s.stringArray;
}
컴파일러는 정확히 무엇을 말합니까? –
복사 생성자에서 'stringArray = s.stringArray;'가 잘못되었습니다. 대신에'strcpy'를 사용하십시오. 내 대답에 편집을 참조하십시오! – Nawaz