Форум программистов, компьютерный форум CyberForum.ru

Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" - C++

Восстановить пароль Регистрация
 
Y4enik
2 / 2 / 0
Регистрация: 22.03.2015
Сообщений: 32
20.07.2016, 16:57     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #1
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
const int N = 10;
 
 class mc {
 public:
     char s1[N], s2[N];
     void input(); //ввод
     void output(); //вывод
     void operator + (char *s);
 };
 
 void mc::input() {
     char *s;
     s = s1;
     s = "Hello";
     s = s2;
     s = " world";
 }
 
 void main()
 {
     mc object;
     object.input();
     std::cout << object.s1 << std::endl;
 }
Подскажите , пожалуйста. Почему выводит в данном случае белеберду и почему функцию input() нельзя реализовать
C++ (Qt)
1
2
3
4
 void mc::input() {
     s1 = "Hello";
     s2 = " world";
 }
Выдает ошибку "выражение должно быть допустимым для изменения левосторонним значением"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2016, 16:57     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением"
Посмотрите здесь:

Ошибка: Выражение должно быть допустимым для изменения левосторонним значением C++
выражение должно быть допустимым для изменения левосторонним значением C++
Выражение должно быть допустимым для изменения левосторонним значением C++
Выражение должно быть допустимым для изменения левосторонним значением C++
Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
shilko2013
 Аватар для shilko2013
238 / 215 / 116
Регистрация: 02.04.2016
Сообщений: 814
Завершенные тесты: 1
20.07.2016, 17:05     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #2
Зачем вам input.. Сделайте конструктор!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const int N = 10;
 
 class mc {
 public:
     string s1, s2;
     mc(string & as1, string &as2) {
     s1=as1;
     s2 = as2;
}
     void output(); {cout << s1 << " " << s2};
     mc operator+ (mc & a) {
          //здесь перегрузка с this
     }
 };
 
 
int main()
 {
     mc object("fdgf","fgdfg");
     object.output();
return 0;
 }
Y4enik
2 / 2 / 0
Регистрация: 22.03.2015
Сообщений: 32
20.07.2016, 17:08  [ТС]     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #3
у меня не подключен заголовок для string. char s[N] с этим не получится? Подскажите, пожалуйста, в чем у меня ошибка
Antony Coder
3 / 2 / 2
Регистрация: 17.07.2016
Сообщений: 16
20.07.2016, 17:13     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #4
попробуй так
C++
1
2
3
4
if (s == s1)
     s = "Hello";
     if  (s == s2)
     s = " world";
shilko2013
 Аватар для shilko2013
238 / 215 / 116
Регистрация: 02.04.2016
Сообщений: 814
Завершенные тесты: 1
20.07.2016, 17:20     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class mc {
public:
    char *s1, *s2;
    mc(char *a, char *b) {
        s1 = a;
        s2 = b;
    }
    void output() { std::cout << s1 << " " << s2; }
    mc operator+ (mc & a) {
        //здесь перегрузка с this
    }
};
int main() {
char * a = "dgfdgdfg";
char * b = "sfgsfgfdgd;";
mc object(a, b);
object.output();
return 0;
}
Добавлено через 19 секунд
Деструктор еще нужен
Y4enik
2 / 2 / 0
Регистрация: 22.03.2015
Сообщений: 32
20.07.2016, 17:25  [ТС]     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #6
С массивами в чем тогда проблема?
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6172 / 2901 / 284
Регистрация: 04.12.2011
Сообщений: 7,715
Записей в блоге: 3
20.07.2016, 17:28     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Y4enik Посмотреть сообщение
с этим не получится
Ага. Или строки подключите или присваивайте в цикле посимвольно. Операторы сложения и присваивания для массивов отсутствуют. И еще куча классных вещей. Тоже отсутствует. Но при остром желании - посимвольно. Только сделайте проверку на длину. Или си-шные библиотеки для строк юзайте. strcat и пр. (тогда хоть и string.h, а всё равно придётся подключить).
А лучше и подключить и использовать string
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.07.2016, 17:31     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением"
Еще ссылки по теме:

C++ Исправить ошибку в условии if "выражение должно быть допустимым для изменения левосторонним значением"
Выражение должно быть допустимым для изменения левосторонним значением C++
Выражение должно быть допустимым для изменения левосторонним значением C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
5950 / 5555 / 1786
Регистрация: 18.12.2011
Сообщений: 14,195
Завершенные тесты: 1
20.07.2016, 17:31     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением" #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Y4enik Посмотреть сообщение
С массивами в чем тогда проблема?
C++
1
2
3
4
5
void mc::input() 
 {
    strcpy(s1,"Hello");
    strcpy(s2," world");
 }
Yandex
Объявления
20.07.2016, 17:31     Исправить ошибку "выражение должно быть допустимым для изменения левосторонним значением"
Ответ Создать тему
Опции темы

Текущее время: 06:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru