Бинарный "++":"String" не определяет этот оператор или переобразование к типу приемлемо к встроеному оператору


#include <iostream>
#include <cstring>

using namespace std;

class String
{
    char* a;
    int size;
public:
    
    String() 
    {
        this->size = 80;
        this->a = new char[size+1];
    }
    String(const char* ptr):String()
    {

        this->setString(ptr);
        
    }
    ~String() {
        delete[] this->a;
    }
    
    void setString(const char* ptr) {
        if (ptr == nullptr)
        {
            return;
        }
        this->size = strlen(ptr);
        delete[] this->a;
        this->a = new char[size + 1];
        for (size_t i = 0; i < size + 1; i++)
        {
            this->a[i] = ptr[i];
        }
    }
    
    
    void show() {
        for (size_t i = 0; i < size; i++)
        {
            cout << this->a[i];
        }
        cout << endl<<size<<endl;
    }

    char operator[](int ind) 
    {
        return a[ind];
    };

    int operator()(const char* tmp) {
        for (size_t i = 0; i < size; i++)
        {
            if (a[i] == tmp[0])
            {
                
                return i;
            }
        }
        return -1;
    };
    operator int() {
        return size;
    }
    void operator++() {
        
        size++;
        a = new char[size];
    
    }
};


int main()
{
    String a;
    
    
    a.setString("words");
    cout<<a("s")<<endl;
    cout<<a[2]<<endl;
    
    a.show();
    a++;
    a.show();
    cout << (int)a << endl;
    
    return 0;
}

Моим заданием есть реализовать операцию инкеремента. Она должна увеличивать длину строки на единицу. Новый символ заполняется пробелом.


Ответы (2 шт):

Автор решения: s1nekoaa

Если кому интересно, я уже решила проблему, все что нужно было это написать ++а вместо а++, всем спасибо за внимание.

→ Ссылка
Автор решения: Mikhailo

Замените

void operator++() {
    size++;
    a = new char[size];
}

на

void operator++(int) {
    size++;
    a = new char[size];
}

Тем самым вы создадите постфиксный инкремент.

Убедитесь, что все при этом компилируется: https://ideone.com/uRuFkm

→ Ссылка