C ++返回与返回参数类型相同的对象时出错

时间:2018-05-05 02:08:29

标签: c++ c++11

我有一个任务,我们的任务是开发一个类,它模仿与标准库中的字符串类相同的行为。我们的字符串类存在于单独的命名空间中,并未使用标准库的任何部分。该类在头文件中定义,并在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:字符串类在与函数的实际定义相同的命名空间中定义。本质上,字符串类需要能够通过字符串文字初始化,并且如果添加到字符串文本中则需要能够动态更改。这个加号运算符只是为了获取另一个字符串对象,组合数据并返回一个新对象,该对象包含由两个原始对象的数据组成的新字符串

0 个答案:

没有答案
相关问题