Надо создать класс "Строка" так, чтобы он удовлетворял указанным условиям
Определить класс "строка" Закрытые члены класса: компонентные данные класса: указатель на char - адрес строки (для представления значения символьной строки) и целое число - количество символов в строке.
Открытые члены класса:
- конструктор класса с одним параметром - целое число(число символов в строке) с инициализацией по умолчанию (15 символов) для создания пустой строки;
- конструктор с одним параметром - указателем на char для создания объекта - строки с данными, определяемыми аргументами (длиной строки и значением);
- конструктор копирования;
- деструктор для программного уничтожения объекта;
- метод класса: перегрузки бинарной операции '+'; преобразования типа;
Дружественные функции - перегрузка операций '[]' и включения в выходной поток '<<'.
Создать экземпляры класса, используя все три конструктора и дать примеры использования перегруженных операций. Выполнил почти все пункты, но возникают трудности с оператором индексирования
#include <cstring>
#include <iostream>
using namespace std;
class stroka {
char* ch; // указатель на строку, на символьный массив
int len; // длина строки
public:
stroka(char* cch) //конструктор 1
{
len = strlen(cch);
ch = new char[len + 1];
strcpy(ch, cch);
}
stroka(int N = 20) //конструктор 2
{
ch = new char[N + 1]; len = 0; ch[0] = '\0';
}
operator char* () { return ch; }//операции – функции преобразования
// типов.
void vivod() // выводит данные
{
cout << "строка: " << ch << " , длина строки=" << len;
};
~stroka()// деструктор
{
delete[]ch;
}
stroka operator+(stroka&);
friend ostream& operator<<(ostream&, stroka);//дружественная функция-операция
friend operator[](stroka&);
};
int main()
{
stroka s1("String");
}
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
Все ошибки компилятора можно просто прочитать и выполнить. Английский язык давно учили?
stroka s1("String");
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
решение :
stroka(char const * cch)
friend operator[](stroka&);
error: ISO C++ forbids declaration of 'operator[]' with no type [-fpermissive]
решение :
friend char & operator[](stroka&);
friend char & operator[](stroka&);
error: 'char& operator[](stroka&)' must be a non-static member function
решение :
char & operator[](int);