Здравствуйте, гость ( Вход | Регистрация )
AD | Дата 29.4.2008, 8:49 |
Не хватает определения param_color. Оно выглядит так?
Но всё таки, мне кажется, что мая телепатия меня не подвела. Ты запоминаешь в векторе fact_prm указатель на локальную переменную. Догадайся, куда он будет указывать при выходе из функции? Исправить - просто. Вместо указателя на QColor везде используй само значение. В параметрах конструктора вместо QColor* пиши const QColor& и будет тебе щастье. Вах-вах! Какая глупая ошибка. Спасибо! Действительно помогло - убрать указатель! |
|
Tonal | Дата 29.4.2008, 7:31 |
Не хватает определения param_color. Оно выглядит так?
Но всё таки, мне кажется, что мая телепатия меня не подвела. Ты запоминаешь в векторе fact_prm указатель на локальную переменную. Догадайся, куда он будет указывать при выходе из функции? Исправить - просто. Вместо указателя на QColor везде используй само значение. В параметрах конструктора вместо QColor* пиши const QColor& и будет тебе щастье. |
|
AD | Дата 28.4.2008, 17:28 |
По приведённому тобой коду нельзя сказать где ошибка. Несколько уточняющих вопросов: 1) Во втором куске кода, где и как определено имя clr? 2) Покажи конструктор, QFactParam который там вызывается. 3) Второй и 3ий кусок кода как распологаются друг относительно друга (в одном блоке, в одной процедуре, в одном классе...)? Предположение, основанное на телепатии - в QFactParam ты запоминаешь адрес локального объекта, который разрушается при выходе из блока, а используешь этот адрес совсем в другой функции. 1)
2)
3) 2-ой и 3-ий куски кода в 1 посте располагаются в разных файлах, вектор QFactParams виден глобально! |
|
Tonal | Дата 28.4.2008, 10:25 |
По приведённому тобой коду нельзя сказать где ошибка. Несколько уточняющих вопросов: 1) Во втором куске кода, где и как определено имя clr? 2) Покажи конструктор, QFactParam который там вызывается. 3) Второй и 3ий кусок кода как распологаются друг относительно друга (в одном блоке, в одной процедуре, в одном классе...)? Предположение, основанное на телепатии - в QFactParam ты запоминаешь адрес локального объекта, который разрушается при выходе из блока, а используешь этот адрес совсем в другой функции. По поводу хранения в векторах объектов и указателей - правильно использовать то, что нужно для задачи, а не что попало. |
|
ViGOur | Дата 25.4.2008, 16:26 |
В данном случае используется не Qt'шный QVector, а STL vector. Но в принципе желательно также использовать указатели. | |
Litkevich Yuriy | Дата 25.4.2008, 16:04 |
в чем большая разница-то? вектор это же контейнер, а в Qt4 в контейнер рекомендуют только указатели класть, если я ничего не путаю. |
|
ViGOur | Дата 25.4.2008, 14:00 |
Соответственно в коде исправляешь vector<QFactParam> на vector<QFactParam*>... |
|
AD | Дата 25.4.2008, 13:34 |
У тебя будет происходить куча операций копирования. Посмотри на результат работы данного кода. Я его для примера написал. Посмотрел код, действительно некрасиво. Но как это к моему случаю относится? Можно пример правильного кода относительно моей программы! Заранее благодарю! |
|
Andrew Selivanov | Дата 25.4.2008, 12:30 |
Вот присвоение уже QColor:
У тебя цикл for только для первого if, остальное почему-то на том же уровне, но выполняется оно не в цикле. |
|
ViGOur | Дата 25.4.2008, 12:22 |
У тебя будет происходить куча операций копирования. Посмотри на результат работы данного кода. Я его для примера написал. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 9:23 |