发生此错误
FATAL ERROR: test case CRASHED: SIGABRT - Abort (abnormal termination) signal
::error::Error: Exit with code: 134 and signal: null
当我测试一个字符串构造函数“String::String(const char* other)”时
String::String(const char* other) // the constructor I'm talking about
{
if (other == nullptr)
{
String();
}
else if (other != nullptr)
{
int count{0};
for (int i = 0; other[i] != '\0'; ++i)
{
count = count + 1;
}
slength = count;
// delete [] ifmt; // ?
ifmt = new char [slength + 1];
for (int i = 0; i < slength; ++i)
{
ifmt[i] = other[i];
}
ifmt[slength] = '\0';
}
}
}
String::String()
{
slength = 0;
ifmt = new char[slength + 1];
ifmt[0] = '\0';
}
在我的自定义String类中。
private:
int slength;
char* ifmt;
我收到的建议之一是创建一个新的选项分支来处理“负长度”,并在本例中构造一个空字符串,但我不知道“负长度”是什么。
我也在网上搜索了一些案例,但我发现我已经做了他们建议的事情,但它仍然不工作。https://www.geeksforgeeks.org/how-to-create-a-custom-string-class-in-c-with-basic-functionalities/design a string class constructor c++custom string exercise in c++
如果有人能在这件事上给予一些指导,我将不胜感激。
1条答案
按热度按时间rqqzpn5f1#
此代码片段
没有任何意义。
在这份声明中
创建了一个临时对象,该临时对象立即被销毁。
因此,当传递空指针时,类的对象具有未初始化的数据成员。
请注意,有一个多余的右大括号
字符串::字符串()