Я пытаюсь изучить концепцию перегрузки операторов в c ++, но я застрял в проблеме, которую пытаюсь решить, используя operator+
, где в моей основной функции я добавляю классы userdefiend вместе.
Конструктор класса принимает указатель строки в качестве параметра.
Мое понимание концепции перегрузки операторов заключается в том, что вы объявляете функцию в классе, используя ключевое слово operatorX
, и заменяете X на оператор, который вы хотите перегрузить. Например, если я хочу перегрузить оператор '-', я должен написать так operator-
. Но когда я отлаживаю свой код, это приводит к переполнению стека, и программа останавливается.
Класс выглядит следующим образом:
class Hello{
public:
Hello(string str):pstr(&str){
}
//The overloaded function below
Hello operator+(Hello& h1){
Hello temp(*this);//creates a copy of the current Hello-object
temp = temp + h1;//adds the new value to the temporary object
return temp;
}
private:
string* pstr;//pointer to string-object
}
Я знаю, что получаю переполнение стека в перегруженной функции.
В основном методе у меня есть следующий код:
void main(){
Hello h1("Hello ");
h1 + Hello("World");
}
Я не знаю, что я правильно закодировал это, но результат должен быть Hello World
в возвращаемом объекте, если я не ошибаюсь.
Как я могу решить эту проблему, чтобы избежать переполнения стека во время выполнения кода, а также как получить правильное возвращаемое значение?