Мой вопрос о том, как перегрузить оператор присваивания для назначения строки для объекта - PullRequest
0 голосов
/ 11 марта 2019

Мой учитель дал нам домашнее задание и просто дал следующую информацию:

"Этот блок кода в main должен быть скомпилирован и запущен."

String s1, s2 = "Ahmet", s3 = "Nalbant";
s1 = s2 + " " + s3;
cout << s1; 

Для этой проблемы я знаю, что мне нужно создать класс с именем «String». Для реализации первой строки мне нужно перегрузить оператор присваивания. На самом деле я его перегрузил, но компилятор по-прежнему выдает эту ошибку «запрошено преобразование из« const char [8] »в нескалярный тип« String ». Это мой код:

#include <iostream>
#include <string.h>

using namespace std;

class String
{
   private:
   char * Name ;

   public:
    String() ;
    ~String() ;
    void operator= (char* Name) ; // To overload Assignment operator.
    String operator+ (const String &Obj) ; // To overload Addition operator.
    friend ostream& operator<< (ostream& Out,const String& B) ; // To overload ostream operator.

};

String::String()
{
  Name  = NULL ;
}

String::~String()
{
    cout << "program has  finished successfully\n" ;
}

void String::operator= (char* Name)
{
    strcpy(this -> Name, Name) ;
}

String String::operator+ (const String &Obj)
{
    String String_Object ;
    String_Object.Name = strcat( this ->Name, Obj.Name) ;
    return String_Object ;
}

/* ostream& operator<< (ostream& Out,const char* & Name)
   {
   }
*/

int main()
{
    String S1, S2 = "Ahmet", S3 = "Nalbant" ;
    return 0 ;
}

Не могли бы вы мне помочь и исправить "void String :: operator = (char * Name)" функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...