Сделал мой собственный класс строк (т. Е. Для домашней работы) и получаю нечетные синтаксические ошибки на двух моих операторах. Мои операторы равенства и добавления утверждают, что у меня слишком много параметров (т. Е. В файле .h), но затем заявляю, что этот метод даже не принадлежит классу в моем .cpp-файле!Оператор (ы) слишком много параметров для этой функции?
Я даже сделал оператор равенства другом, но intellisense все равно дает мне те же сообщения об ошибках.
Кто-нибудь знает, что я делаю неправильно?
friend bool operator==(String const & left, String const & right);
string.h
bool operator==(String const & left, String const & right);
String const operator+(String const & lhs, String const & rhs);
string.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;
}
То же самое относится к 'operator +', будь то 'friend' или враг. – juanchopanza
@NPE - Ничего себе. Огромное спасибо!! – MrPickle5
EDIT: Забыл удалить декларацию метода INSIDE моего класса. Все хорошо. Еще раз спасибо! – MrPickle5