Russian Qt Forum
Октябрь 01, 2024, 10:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Копия объекта  (Прочитано 3432 раз)
alexeev
Гость
« : Октябрь 23, 2013, 08:51 »

Здравствуйте, возник следующие вопрос навейнный темой http://www.prog.org.ru/topic_25877_0.html.
Получается, что вообще нельзя создать копию любого обеъкта? Следующий код не работает, как это можно обойти? Как создать копию?

Код:
QPushButton *But = new QPushButton("Button");
QPushButton Button;
Button = *(But);
Записан
mutineer
Гость
« Ответ #1 : Октябрь 23, 2013, 08:54 »

Если конструктор копирования у объекта закрыт, то глубокую копию никак не сделаешь
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Октябрь 23, 2013, 09:55 »

Создать копию QObject и его наследника довольно просто, нужно скопировать все свойства.
т.е. как то так

создать новый объект,
пройтись по всем свойствам источника и присовить их назначению...
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Октябрь 23, 2013, 15:18 »

Здравствуйте, возник следующие вопрос навейнный темой http://www.prog.org.ru/topic_25877_0.html.
Получается, что вообще нельзя создать копию любого обеъкта?
Не любого объекта, а любого виджета. Да, это запрещено, и это правильно. Где-то читал объяснение типа "а какой (разумный) результат хотите получить таким копированием?". Вторая кнопка поверх первой? Так все равно не получится напр если есть layout. Если нужно "штамповать" однотипные виджеты, выделите их создание в отдельный метод и вызовите его N раз, это несложно
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #4 : Октябрь 23, 2013, 18:38 »

Судя по приведённой в первом посту теме, ТС хочет реализовать что-то в роде модель-представление. Где в качестве вьюхи выступает окно графика, а в качестве модели - сами данные (кривые). Зачем лишний раз их копировать?

На сколько мне известно, используя QWT это в принципе можно устроить..   
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
codemonkey
Гость
« Ответ #5 : Октябрь 24, 2013, 09:01 »

Код
C++ (Qt)
QPushButton *But = new QPushButton("Button");
QPushButton Button;
void* pBut=(void*)But;
void* pButton=(void*)&Button;
memcpy(pBut,pButton,sizeof(QPushButton));
Записан
mutineer
Гость
« Ответ #6 : Октябрь 24, 2013, 09:04 »

И теперь обе кнопки указывают на одни и те же данные. Первая удаленная кнопка эти данные уничтожит и вторая останется с мусорной памятью
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.143 секунд. Запросов: 23.