0 / 0 / 1
Регистрация: 27.07.2013
Сообщений: 36
|
||||||
1 | ||||||
ООП. Классы. Член-функция стирает предидущее значение. Есть идеи?03.09.2014, 22:05. Показов 1078. Ответов 4
Метки нет (Все метки)
Вот код. Дело в том что когда я присваиваю Name = test и вывожу его(и в дебагере тоже) поле занолнено верным значением из файла! Но как только заверашется функция и запускается Print(); то сразу поле Name затирается ерундой MMMMMMMMM и тд.. В чем проблема ? Заранее благодарю!
0
|
03.09.2014, 22:05 | |
Ответы с готовыми решениями:
4
Можно ли программировать на Си в ООП-стиле и есть ли в Си классы? Идеи по теме курсовой. ООП Нужен код, в котором есть: Классы, Наследование, Виртуальная функция, Перегрузка операторов Тема для курсовой работы по ООП. Нужны идеи |
03.09.2014, 22:18 | 2 |
Сообщение было отмечено Shady_Don как решение
Решение
test является локальным массивом символов в функции Client::Init. Когда происходит присвоение Name = test, присваевается адрес массива test в указатель Name. После выхода из функции массив test удаляется из памяти, а Name все еще хранит его адрес. А это уже невалидный адрес.
Решение: использовать strcpy
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
04.09.2014, 02:56 | 3 |
Зачем там, вообще, этот test? Раз у вас в классе указатели, то выделяйте память динамически. Только потом, в деструкторе, не забудьте её освободить. И не забывайте про правило трёх.
https://ru.wikipedia.org/wiki/Правило_трёх_
1
|
0 / 0 / 1
Регистрация: 27.07.2013
Сообщений: 36
|
|
04.09.2014, 07:48 [ТС] | 4 |
Отличное решение и объяснение про массив. Использовал strcopy все работает идеально!
0
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
04.09.2014, 14:45 | 5 |
1
|
04.09.2014, 14:45 | |
04.09.2014, 14:45 | |
Помогаю со студенческими работами здесь
5
Есть ли такие, у кого есть свои идеи, касающиеся защиты от вирусов? Какая функция стирает и перерисовывает консоль Есть ли тут такие, у кого есть свои идеи ,касающиеся компьютерной безопасности,например, по защите от вирусов? Функция, которая стирает заданный символ из строки без вспомогательного массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |