crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> Цвет линий графика, неясно почему не устанавливается
AD
  опции профиля:
сообщение 28.4.2008, 17:28
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Tonal @ 28.4.2008, 11:25) *
По приведённому тобой коду нельзя сказать где ошибка.
Несколько уточняющих вопросов:
1) Во втором куске кода, где и как определено имя clr?
2) Покажи конструктор, QFactParam который там вызывается.
3) Второй и 3ий кусок кода как распологаются друг относительно друга (в одном блоке, в одной процедуре, в одном классе...)?

Предположение, основанное на телепатии - в QFactParam ты запоминаешь адрес локального объекта, который разрушается при выходе из блока, а используешь этот адрес совсем в другой функции. :)

1)
QColor clr;

for(paramI iter=graphic -> mainWindow -> cur_rec.begin(); iter!=graphic -> mainWindow -> cur_rec.end(); ++iter)
     if((*iter) -> Name() == prm_name.toStdString() && (*iter) -> Address() == iadr)
     {
/// etc

2)
 
QFactParam(): param_record(NULL), param_color(NULL), type(NOTYPE) {}
    QFactParam(ParamDescr* _pr, TP_PARAM _tp, QColor* _cl = &QColor(Qt::black)): param_record(_pr), type(_tp),
                            param_color(_cl) {}
    QFactParam(const QFactParam& _qf) { *this = _qf; }

3) 2-ой и 3-ий куски кода в 1 посте располагаются в разных файлах, вектор QFactParams виден глобально!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 29.4.2008, 7:31
Сообщение #12


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Не хватает определения param_color.
Оно выглядит так?
QColor* param_color?


Но всё таки, мне кажется, что мая телепатия меня не подвела. :)

Ты запоминаешь в векторе fact_prm указатель на локальную переменную.
Догадайся, куда он будет указывать при выходе из функции?

Исправить - просто. Вместо указателя на QColor везде используй само значение. В параметрах конструктора вместо QColor* пиши const QColor& и будет тебе щастье. :)

Сообщение отредактировал Tonal - 29.4.2008, 7:32
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 29.4.2008, 8:49
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Цитата(Tonal @ 29.4.2008, 8:31) *
Не хватает определения param_color.
Оно выглядит так?
QColor* param_color?


Но всё таки, мне кажется, что мая телепатия меня не подвела. :)

Ты запоминаешь в векторе fact_prm указатель на локальную переменную.
Догадайся, куда он будет указывать при выходе из функции?

Исправить - просто. Вместо указателя на QColor везде используй само значение. В параметрах конструктора вместо QColor* пиши const QColor& и будет тебе щастье. :)

Вах-вах! Какая глупая ошибка. Спасибо! Действительно помогло - убрать указатель! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.12.2024, 0:07