0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
|||||||||||
1 | |||||||||||
Error C2106: '=' : left operand must be l-value24.04.2016, 17:05. Показов 5485. Ответов 31
Добрый день! Пишу программу управления колледжом. И столкнулась с этой ошибкой.
У меня есть класс Department который имеет массив указателей на Course:
0
|
24.04.2016, 17:05 | |
Ответы с готовыми решениями:
31
Error C2106: '=' : left operand must be l-value error C2106: '=' : left operand must be l-value выдаёт ошибку на сортировку Error: lvalue required as left operand of assignment| [Error] lvalue required as left operand of assignment |
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
25.04.2016, 14:00 | 2 |
get_p_course() возвращает значение указателя. Естественно, ему нельзя присвоить.
1
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
|||||||||||||||||||||
25.04.2016, 16:39 [ТС] | 3 | ||||||||||||||||||||
+= friend потому что я использую его в другом классе. В классе College.
И в классе College есть массив указателей Department**. И мне нужно перегрузить += чтобы так добавлять Course в Department. Добавлено через 8 минут И компилятор ругается из-за оператора: Error C2803 'operator +=' must have at least one formal parameter of class type Добавлено через 2 минуты Спасибо большое!Исправила:
Попробовала сделать так:
И вот почему то в файле Department.h вылазит полно синтаксических ошибок:
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
25.04.2016, 18:08 | 4 |
И что? Оно и без friend должно работать.
Оператор должен видеть все поля класса напрямую, поэтому get_p_course() не нужен, просто p_department.p_course. Ошибки эти, наверное, из-за того, что не видит этот Course как тип. А добавление в массив указателей потребует выделять память с учётом добавления, потом всё копировать, удалять старое и заменять p_course. Сделать так, как у тебя, значит потерять все данные, ещё и утечка памяти будет.
1
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
||||||
26.04.2016, 09:53 [ТС] | 5 | |||||
Спасибо большое!
Разобралась вроде с operator +=:
Я же сделала #include "Course.h" и в самом коде он слово Course выделяет цветом как нужно. Ошибки эти появляются только после того как я хочу запустить программу.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
26.04.2016, 10:01 | 6 |
Из этого фрагмента не ясно.
0
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
|
26.04.2016, 10:09 [ТС] | 7 |
Исправила буквально только что!
Оказалось что в Course.h я сделала include "Department.h". Удалила include "Department.h" и все заработало. Спасибо огромное за помощь!!!Буду делать дальше.Надеюсь поможешь если еще возникнут вопросы!! А насчет массивов указателей. Я делаю как создаю new копирую в temp добавляю еще один объект и потом обратно создаю new и копирую все туда. Ну и конечно delete. А другого способа я даже и не знаю.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
26.04.2016, 10:41 | 8 |
Ну там не было ни копирования, ни освобождения, просто присваивалось.
1
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
|||||||||||||||||||||
27.04.2016, 14:07 [ТС] | 9 | ||||||||||||||||||||
У меня возник один вопрос.
Как можно сделать ввод данных которые вводятся подряд через enter и потом вся скажем пачка считывается перегруженным оператором ввода.
Короче перегрузила просто по другому сам оператор ввода:
Еще вопрос появился. Хочу перегрузить оператор []:
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
27.04.2016, 15:11 | 10 |
А что такое p_student? Второй цикл идёт поверх первого, тогда зачем он? Учитывая, что здесь указатели, оператор [] вообще не применяется.
0
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
|
27.04.2016, 18:23 [ТС] | 11 |
p_student это Student** p_student массив указателей который находиться в class Course.
Тоесть студенты которые учатся на этом курсе. И мне надо сделать так чтоб можно было удалить студента с курса. И для этого перегрузить оператор -= в class Course чтоб он удалял студента по индексу.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
27.04.2016, 18:50 | 12 |
А почему двумерный массив? Одномерного мало, что ли, для списка студентов? get_p_student() что возвращает? Выражение в 4-й строке сомнительно.
0
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
||||||
27.04.2016, 18:55 [ТС] | 13 | |||||
Student** p_student это так по условию задания.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
||||||
27.04.2016, 21:25 | 14 | |||||
Ты же эту функцию относительно Student вызываешь. Каждый Student хранит указатель на массив всех Student, что ли?
Добавлено через 3 минуты Вот это что?
1
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
||||||||||||||||||||||||||
28.04.2016, 09:45 [ТС] | 15 | |||||||||||||||||||||||||
Оператор -= получает объект s :
Добавлено через 17 минут Совсем забыла, и в Student.h есть
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
||||||
28.04.2016, 10:17 | 16 | |||||
В этом фрагменте get_p_student() вызывается для s, а s - Student. Так что он возвращает?
0
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
||||||
28.04.2016, 10:18 [ТС] | 17 | |||||
Совсем забыла, и в Student.h есть
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
28.04.2016, 10:20 | 18 |
Я прочитал. Для чего это? Какое предназначение у статического поля?
0
|
0 / 0 / 0
Регистрация: 17.04.2016
Сообщений: 18
|
||||||
28.04.2016, 10:23 [ТС] | 19 | |||||
Что каждый объект Student возвращает указатель на себя. И везде используются не объекты а только указатели на них.
0
|
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
|
|
28.04.2016, 10:28 | 20 |
Указатель на себя - this, а статическое поле будет общим для все объектов класса.
Добавлено через 1 минуту Если ты передаёшь Student в функцию, можно просто взять указатель.
0
|
28.04.2016, 10:28 | |
28.04.2016, 10:28 | |
Помогаю со студенческими работами здесь
20
Error: lvalue required as left operand of assignment. Не могу разобраться где ошибка Error C2106 или error C2440 Lvalue required as left operand of assignment Ошибка в методе, left operand maust be I-value Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |