我有一个任务,我们的任务是开发一个类,它模仿与标准库中的字符串类相同的行为。我们的字符串类存在于单独的命名空间中,并未使用标准库的任何部分。该类在头文件中定义,并在cpp文件中实现。我遇到的问题是重载+运算符并返回一个包含连接字符串的新字符串对象。代码在这里:
String String::operator+(String & str) const {
char *returnString = new char[str._size + this->_size - 1]
// both null terminated strings and this gets the correct size of the new string
// code concatenating string and storing it in a char * returnString
// user recommend i remove this since it is not apart of my question
return String(returnString);
}
我在return语句中收到错误,如下所示:
返回' String'从函数返回' String':Class' String'与class' String'
不兼容
我还尝试声明一个字符串变量并将其返回,如:
String s1(returnString);
return s1;
这不会给出错误并允许我编译,但这不起作用,因为变量超出范围并且析构函数被调用。我也尝试从函数声明中删除const仍无济于事。
编辑:头文件由教授提供给我们,我们无法更改函数返回类型,名称或参数数量。所以我无法改变返回类型。编辑2:字符串类在与函数的实际定义相同的命名空间中定义。本质上,字符串类需要能够通过字符串文字初始化,并且如果添加到字符串文本中则需要能够动态更改。这个加号运算符只是为了获取另一个字符串对象,组合数据并返回一个新对象,该对象包含由两个原始对象的数据组成的新字符串