gpt4 book ai didi

C++ 重载 += 带有双指针的运算符

转载 作者:行者123 更新时间:2023-11-28 06:17:34 28 4
gpt4 key购买 nike

所以我试图为字典程序赋值重载 += 运算符。这是我的功能:

Definition& Definition::operator += (const String& input) {
String** temp;
temp = new String*[numDefs + 1];
temp[0] = new String[numDefs];
for (int i = 0; i < numDefs; i++) {
temp[i] = def[i];
}
temp[0][numDefs] = input;
delete[] def;
def = temp;
numDefs++;
return *this;
}

但是,当我尝试将“输入”放入“临时”时,它似乎不起作用。这是我的 String 类函数,用于将字符串分配给字符串:

String& String::operator=(const String& input) {
data = NULL;
(*this) = input.getData();
return *this;
}

和:

String& String::operator=(const char* input) {
if (data != input)
{
if (data != NULL)
{
delete[] data;
data = NULL;
}
data_len = strSize(input);
if (input != NULL)
{
data = new char[data_len + 1];
strCopy(data, input);
}
}
return *this;
}

似乎找不到问题。

最佳答案

一分钟前有个回答被用户删了帮我,我把代码改成:

Definition& Definition::operator += (const String& input) {
String** temp;
int tempSize = numDefs + 1;
temp = new String*[tempSize];
for (int i = 0; i < numDefs; i++) {
temp[i] = new String;
temp[i] = def[i];
}
temp[numDefs] = new String;
(*temp[numDefs]) = input;
delete[] def;
def = temp;
numDefs = tempSize;
return *this;
}

不管是谁,谢谢!

关于C++ 重载 += 带有双指针的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29947095/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com