関数からローカルオブジェクトを返そうとしています
そして私はこの問題を抱えています
ローカルで作成されたオブジェクトを返すと、null が返されます
DString DString :: operator + (const char* param)
{
// Variable definition
int nSize = ( this->GetLength() + (strlen(param)));
// Create a new char array in the opropriate size
char* cstrNewString = new char[nSize + 1];
// Append data
strcpy(cstrNewString, this->_cstrString);
strcat(cstrNewString, (char*)param);
cstrNewString[nSize] = '\0';
// Create a new DString to return
DString dstNewData(cstrNewString);
// Clean up
delete[] cstrNewString;
// Return data
return (dstNewData); // Null!
次のような戻り行に新しいオブジェクトを作成するだけで、まったく同じことを行うと:
DString DString :: operator + (const char* param)
{
// Variable definition
int nSize = ( this->GetLength() + (strlen(param)));
// Create a new char array in the opropriate size
char* cstrNewString = new char[nSize + 1];
// Append data
strcpy(cstrNewString, this->_cstrString);
strcat(cstrNewString, (char*)param);
cstrNewString[nSize] = '\0';
// Create a new DString to return
DString dstNewData(cstrNewString);
// Clean up
delete[] cstrNewString;
// Return data
return (DString(dstNewData.ToCharArray())); // Not null, returns correctly!
正しく返されます..なぜこれを行うのですか?どうすれば修正できますか?