3

制作了我自己的字符串类(显然是用于家庭作业),并且在我的两个运算符上遇到奇怪的语法错误。我的相等和添加运算符声称我有太多参数(即在我的 .h 文件中),但随后声称该方法甚至不属于我的 .cpp 文件中的类!

我什至将相等运算符加为好友,但智能感知仍然给我同样的错误信息。

有谁知道我做错了什么?

friend bool operator==(String const & left, String const & right);

字符串.h

bool operator==(String const & left, String const & right);
String const operator+(String const & lhs, String const & rhs);

字符串.cpp

bool String::operator==(String const & left, String const &right)
{
    return !strcmp(left.mStr, right.mStr);
}

String const String::operator+(String const & lhs, String const & rhs)
{
    //Find the length of the left and right hand sides of the add operator
    int lengthLhs = strlen(lhs.mStr);
    int lengthRhs = strlen(rhs.mStr);

    //Allocate space for the left and right hand sides (i.e. plus the null)
    char * buffer = new char[lhs.mStr + rhs.mStr + 1];

    //Copy left hand side into buffer
    strcpy(buffer, lhs.mStr);

    //Concatenate right hand side into buffer
    strcat(buffer, rhs.mStr);

    //Create new string
    String newString(buffer);

    //Delete buffer
    delete [] buffer;

    return newString;
}
4

1 回答 1

4

您需要operator==在类之外定义:

bool String::operator==(String const & left, String const &right)
     ^^^^^^^^ REMOVE THIS

如果operator+也是友元,也需要定义为自由函数(即类外)。

于 2013-04-18T05:47:41.203 回答