的調試器給我「壞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;
}
準確*該編譯器說什麼*? – 2011-03-27 19:25:23
在您的拷貝構造'字符串數組= s.stringArray;'是錯誤的。改用'strcpy'。請參閱我的答案中的編輯! – Nawaz 2011-03-27 19:39:10