Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2018, 00:58   #1
c3nwen
 
Аватар для c3nwen
 
Регистрация: 01.06.2018
Сообщений: 9
Сообщение Массив символов char / Работа со строками

Доброго времени суток, столкнулся вот с какой проблемой:
Пытаюсь создать свой класс работы со строками все пока отлично работает, кроме одного момента.

Код:
class mystring
{
public:
	mystring(const char *Str) // Перегруз конструктора
	{
		cout << "Вызвался конструктор #2: " << this << endl; // Мониторинг входа
		Length = strlen(Str);
		this->Str = new char[Length+1];
		for (int i = 0; i < Length; i++) this->Str[i] = Str[i];
		this->Str[Length] = '\0';
	}
Задача, в ходе программы изменить данные одного или более элемента массива символов типа char. Но конструктор отказывается работать с данными типа не const. Это задание взял из некого видео, но там автор использует вместо const char *str - просто char *str и его компилятор относится к этому абсолютно нормально, как так то?. Извлечь данные можно без проблем:

Код:

char operator [](const int other) // Перегруз оператора
{
	return this->Str[other];
}
int main()
{
	mystring Obj1("Hellow ");
	cout << Obj1[0];
return 0;
}
При попытке написать вот такое выражение
Код:
Obj1[0] = '1';
пишет, что "выражение должно быть допустимым для изменения левосторонним значением
Заранее большое спасибо!

Последний раз редактировалось c3nwen; 03.06.2018 в 01:14.
c3nwen вне форума Ответить с цитированием
Старый 03.06.2018, 01:27   #2
c3nwen
 
Аватар для c3nwen
 
Регистрация: 01.06.2018
Сообщений: 9
По умолчанию

Нашел ответ на свой вопрос, простите дуру грешную - что нафлудил тут. Проблема была вообще не в конструкторе и типе передаваемого значения. А в том, что при вызове перегрузки оператора [] нужны было указать не символ, а ссылку на него!=) Вы все лучшие! Этот форум самый лучший во всем интернете!!!=) Хотя факт использования автором видео просто *char, вместо const *char - для меня остается тайной о_О. Если я так делаю, то сразу вылазит ошибка - отсутствуют экземпляры конструктора. Вначале подумал, что есть еще одна перегрузка конструктора или что-то подобное, но нет... В общем непонятно.

Код:
	char& operator [](int other) // Перегруз оператора
	{
		return this->Str[other];
	}

Последний раз редактировалось c3nwen; 03.06.2018 в 01:35.
c3nwen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
РАБОТА СО СТРОКАМИ СИМВОЛОВ в С Анннютик Общие вопросы C/C++ 15 03.08.2011 06:49
Работа со строками символов. Fuckoff Помощь студентам 0 18.04.2011 20:59
Работа со строками символов. ТС. Siarhey1991 Помощь студентам 0 13.06.2010 18:32
работа со строками символов Anuta* Фриланс 5 28.05.2010 21:55
Работа со строками типа Char Horror Общие вопросы C/C++ 4 02.02.2008 19:45