↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Временно не работает,
как войти читайте здесь!
leprechaun
13 августа 2018
Aa Aa
#янепрогерятолькоучусь
Решила я тут, чтоб совсем не заплесневеть мозгом за лето, попробовать написать простенькую игрушку. И я была бы не я, если б всё работало.
Проблема такова:
Есть класс. У него есть три поля: int, int и char*. Так же есть private метод типа void, который по тем двум интам задаёт значение char*. Этот метод вызывается в конструкторе с заданными интами. Только вот на выходе (то есть, в месте, где конструктор и был вызван) получается экземпляр класса, у которого заданы интовые поля, а в char* поле хранится белиберда, которая при вызове деструктора и освобождении памяти вопит, что я лезу не в ту область памяти.
В общем, спасите-помогите: я в упор не понимаю, как это поправить.
(пишется вся эта хрень на плюсах)
13 августа 2018
14 комментариев из 23
А вызываете как?
ufhhb2018
ни тот конструктор вызываешь, очевидна жы
ufhhb2018
либа делаишь delete вместа free
ufhhb2018
пакажи сись... полний код класса и как ти его визиваишь вместа ентага абрыфка
Не знаю, у меня получилось: https://onlinegdb.com/BJszavJLX
Передвинул *view в public для удобства. Ещё вот эта строка неправильная: view[length + 3] = ''; — тут должен быть пробел, а не пустой литерал.
Styx
вызываю просто вот так: buildView()
а вне класса этот метод, ясен пень, не вызывается
Когда вызывается конструктор по умолчанию, переменные класса не определены, поэтому непонятно, что там вообще будет работать.

Маллок в топку, в C++ есть new.
new тоже в топку и прикрутить STL, который стандартен в плюсе.
Styx
там даже не пробел, там символ конца строки, но фанфикс его упорно удаляет
ufhhb2018
там не хватает разве что деструктора, остальные методы в данном случае не важны

Line::~Line()
{
num = -1;
length = 0;
if (view != NULL)
{
free(view);
view = NULL;
}
}
leprechaun, посмотрите код по ссылке.
Styx
а разве оно не должно было сломаться из-за того, что символа конца строки нет?
leprechaun, а я там пробел вставил :)
Styx
как так? если я про него забывала, у меня глючило решительно всё
leprechaun, ну вот вставил там \\n, работает.
ПОИСК
ФАНФИКОВ











Закрыть
Закрыть
Закрыть