Доброго времени суток. Прошу помочь советом что делаю не так или по какой теме почитать (думаю чего-то принципиально базового не понимаю).
Почему происходит странная вещь: ****
1. Передаю в метод модель.
2. Добавляю модель в список
3. Сразу же его читаю и получаю результат отличный от того что записывал.
Доброго времени суток. Прошу помочь советом что делаю не так или по какой теме почитать (думаю чего-то принципиально базового не понимаю).
Почему происходит странная вещь:
1. Передаю в метод модель.
2. Добавляю модель в список
3. Сразу же его читаю и получаю результат отличный от того что записывал.
вставьте код, как все делают, покажу ошибку
картинки не надо вставлять, мы не в журнале Мурзилка
вставьте код, как все делают, покажу ошибку
картинки не надо вставлять, мы не в журнале Мурзилка
Извините, думал что так будет нагляднее:
void AddNewModel(CModel &model) { if(sellList.Total()==0) { sellList.Add(&model); int total = sellList.Total(); CModel firstNode = sellList.GetFirstNode(); return; }
Метод Add() ждет указателя на объект.
А ты передаешь туда ссылку на объект (интересно, как это удалось сделать ?).
GetPointer(), думаю, должен помочь.
Но, обрати внимание на время жизни твоего объекта - возможен случай, когда объект будет удален, а список будет существовать.
Но смена ссылки на указатель ничего не дала:
void AddNewModel(CModel &model) { if(sellList.Total()==0) { sellList.Add(GetPointer(model)); int total=sellList.Total(); CModel firstNode=sellList.GetFirstNode(); return; }
Ситуация повторилась, элементы в списке имеют неверные значения.
Но смена ссылки на указатель ничего не дала:
Ситуация повторилась, элементы в списке имеют неверные значения.
Погоди-погоди.
Ты взял указатель, заполнил им вершину списка.
Потом создал объект firstNode, и приравнял его указателю, полученному из вершины списка.
Вопрос - у тебя конструктор копирования есть ? Без конструктора копирования - понятное дело, что объект firstNode - не будет равен объекту model.
Подозреваю также, что ты хочешь иметь только один объект model, а не два - model и firstNode.
Но смена ссылки на указатель ничего не дала:
Ситуация повторилась, элементы в списке имеют неверные значения.
Объекты списков надо создать на глобальном уровне, не? а не создавать каждый раз новые в ф-ии. Или хотя бы удалять их потом после использования
Спасибо, я понял свою ошибку. У меня получилось что я указатель пытаюсь присвоить модели, естественно ничего не получилось. Но если написать:
CModel *firstNode=sellList.GetFirstNode();
то я получу указатель, и сохраню в корректную переменную. Во всяком случае вроде бы получилось - модель после прочтения корректна.
А можно пожалуйста еще раз ссылку на "время жизни" объекта, а то ссылка вроде не туда куда надо ведет.
Объекты списков надо создать на глобальном уровне, не? а не создавать каждый раз новые в ф-ии. Или хотя бы удалять их потом после использования
Меня как раз вариант создания новой модели в функции устраивает. Я анализирую историю и если нахожу подходящую модель, то ее создаю. А так как каждый раз при поиске модели я пробегаю по историческим данным, то повторы хочу отсекать анализируя ранее сохраненные модели. Лишнее модели буду удалять, например в случае повторения.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Доброго времени суток. Прошу помочь советом что делаю не так или по какой теме почитать (думаю чего-то принципиально базового не понимаю).
Почему происходит странная вещь:
1. Передаю в метод модель.
2. Добавляю модель в список
3. Сразу же его читаю и получаю результат отличный от того что записывал.