Перегрузка оператора сложения (добавление строки к объекту с помощью функции) - PullRequest
0 голосов
/ 09 сентября 2018

Я создаю класс динамического массива, и я новичок в c ++. У меня возникли проблемы с перегрузкой оператора сложения для добавления строки в объект. Когда я пытаюсь добавить строку, на экране компиляции ничего не появляется. Я также добавил свой конструктор копирования, деструктор, перегруженный оператор присваивания и перегруженный оператор ostream на тот случай, если возникла какая-либо из них. Большое спасибо за помощь!

DynamicStringArray::~DynamicStringArray()
{
    delete[] dynamic_Array;
    dynamic_Array = NULL;
}

DynamicStringArray::DynamicStringArray(const DynamicStringArray& first)
{
    size = first.returns_Size();

    dynamic_Array = new string[size];
    for (int n = 0; n < size; n++)
    {
        dynamic_Array[n] = first.get_Entry(n);
    }
}

void DynamicStringArray::operator =(const DynamicStringArray& first)
{
    this->size = first.returns_Size();

    this->dynamic_Array = new string[size];
    for (int i = 0; i < this->size; i++)
    {
        this->dynamic_Array[i] = first.get_Entry(i);
    }
}

ostream& operator <<(ostream& out, const DynamicStringArray& first) //nonmember requires 2 arguements
{
    for (int i = 0; i < first.size; i++)
    {
        out << first.dynamic_Array[i] << endl;
    }
    return out;
}

void DynamicStringArray::add_Entry(string a)
{
    string* Temp_Array = dynamic_Array; //old array
    dynamic_Array = new string[size + 1]; //new array

    for (int i= 0; i < size; i++) //copy old string values to temp array
    {
        dynamic_Array[i] = Temp_Array[i];
    }

    dynamic_Array[size] = a; //puts string a into last position of new array

    delete[]Temp_Array; //free memory space

    size++;
}

DynamicStringArray DynamicStringArray::operator +(const string& a)
{
    DynamicStringArray added;
    added.add_Entry(a);
    return added;
}


int main()
{
    DynamicStringArray fav_Foods;
    fav_Foods.add_Entry("pasta");
    fav_Foods.add_Entry("sushi");
    fav_Foods + "Burgers";
    cout << fav_Foods << endl;
}

1 Ответ

0 голосов
/ 09 сентября 2018
DynamicStringArray DynamicStringArray::operator +(const string& a)
{
    DynamicStringArray added;
    added.add_Entry(a);
    return added;
}

Почему вы думаете, что вам нужно создать новый DynamicStringArray added? Просто позвоните add_Entry(a) на текущем экземпляре. Кроме того, operator+() должен возвращать ссылку на экземпляр, к которому он обращен:

 DynamicStringArray& DynamicStringArray::operator+(string const &a)
 {
     add_Entry(a);
     return *this;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...