Бинарный "++":"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