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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2022, 01:55   #1
alex_titanic
Пользователь
 
Регистрация: 16.06.2022
Сообщений: 16
По умолчанию выдает ошибку компиилятор Выражение должно быть допустимым для изменения левосторонним значением

Код:
#include <iostream>
using namespace std;
const int n = 10;
class MyClass {
private:
	char code;
public :
	MyClass* next;
	
	~MyClass() {
		cout << "Object was deleted  " << code ;
	}
	void show() {
		cout << code << "  ";
		if (next) {
			next->show();
		}
	}
	void Set(char slovo) {
		code = slovo;
	}
	char Get() {
		return code;
	}
	
		
};
void deleteAll(MyClass* q) {
	if (q->next) {
		deleteAll(q->next);
	}
	delete q;
}

int main() {
	 char code_ = 'A';
	MyClass* pnt = new MyClass;
	MyClass *p;
	p = pnt;
	
	p->Set(code_);
	
	for (int i = 0; i < n; i++) {
		p->next = new MyClass;
		p->next->Get() = p->Get() + 1;!!!(вот тут ошибку выдает)!!!
		p = p->next;
	}
	p->next = 0;

	
	
	pnt->show();
	cout << endl;
	deleteAll(pnt);





	return 0;
}
как это решить , в каком виде можно иначе записать или что подправить?
alex_titanic вне форума Ответить с цитированием
Старый 27.07.2022, 02:19   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Весь код не смотрел. Если говорить именно про указанную строку, то попробуйте:
Код:
p->next->Set(p->Get() + 1);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 27.07.2022, 10:00   #3
alex_titanic
Пользователь
 
Регистрация: 16.06.2022
Сообщений: 16
По умолчанию

спасибо огромное , помогло , скажите пожалуйста как эта работает, мы обращаемся к методу Set ,который ничего не возвращает но при этом программа работает и .... в общем в голове суматоха , никогда с такой конструкцией не сталкивался.)
alex_titanic вне форума Ответить с цитированием
Старый 27.07.2022, 11:14   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от alex_titanic Посмотреть сообщение
скажите пожалуйста как эта работает,
Цитата:
Сообщение от alex_titanic Посмотреть сообщение
мы обращаемся к методу Set ,который ничего не возвращает но при этом программа работает
Сам спросил - сам ответил. Вы же когда дверь открываете, не ожидаете, что дверь вам яблоко даст?
p51x вне форума Ответить с цитированием
Старый 28.07.2022, 01:41   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

alex_titanic, почитайте про геттеры и сеттеры.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 28.07.2022, 12:13   #6
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 951
По умолчанию

Цитата:
Сообщение от alex_titanic Посмотреть сообщение
как эта работает
p->next->Set(p->Get() + 1);

1) Get() - возвращает значение
2) к этому временному значению прибавляется 1
3) результат передаётся в качестве аргумента функции Set()
Алексей1153 вне форума Ответить с цитированием
Старый 28.07.2022, 12:16   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 951
По умолчанию

Цитата:
Сообщение от alex_titanic Посмотреть сообщение
class MyClass {
private:
char code;
public :
MyClass* next;

~MyClass() {
cout << "Object was deleted " << code ;
}
void show() {
cout << code << " ";
if (next) {
next->show();
}
}
void Set(char slovo) {
code = slovo;
}
char Get() {
return code;
}


};
зачем такое усложнение и замусоривание кода ?
->
Код:
struct MyClass
{
	char code{};
	MyClass* next{};

	void show()const
	{
		std::cout << code << "  ";
		if (next)next->show();
	}
};
Алексей1153 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите исправить ошибку (язык C)- error C2106: =: левый операнд должен быть левосторонним значением Tarcom Помощь студентам 1 03.10.2013 02:55
Выражение должон быть допустимо для изменения левосторонним значемнием jesterXXX Помощь студентам 3 22.01.2013 23:35
не могу найти ошибку!!!должно быть 0.75...,а выходит 0.8... pink Visual C++ 6 06.03.2012 10:48
начальное значение ссылки на левосторонний параметр должно быть левосторонним значением Dimarik Общие вопросы C/C++ 3 03.03.2011 23:14
строковое выражение числа должно быть переведено в вещественный тип Wi1D Помощь студентам 8 09.02.2009 18:16