Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ALeXUI_1
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
1

Как создать копию объекта, зная его указатель?

22.10.2013, 16:49. Просмотров 927. Ответов 6
Метки нет (Все метки)

Здравствуйте, существует следующая проблема. В своей программе я рисую график используя класс QwtPolarPlot. По нажатию на график, должно открыться новое окно, в котором будет точно такой же график. Хорошим решением было бы либо передать в метод создания окна копию объекта QwtPolarPlot, но в этом классе не определен конструктор копии, поэтому так сделать нельзя. Можно ли как-то решить данную проблему?
Есть ещё один варинат, создать на новом окне объект QwtPolarPlot, получить список всех элементов находящихся на первом графике, и прикрепить к новому объекту, но список элементов получается как список указателей на эти объекты, поэтому прикрепляя их на новый объект, на старом они пропадают. Какждый элемент списка представляет из себя Qlist <QwtPolarItem*>, его объект тоже создать нельзя, т.к QwtPolarItem - абстрактный класс. Как решить эту проблему?)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2013, 16:49
Ответы с готовыми решениями:

Создать копию объекта производного класса зная указатель на базовый
Добрый день! Вопрос в следующем... Возможно ли создать копию объекта...

Как создать копию объекта на который указывает указатель
У меня есть указатель класс Student, который хранит информацию о студентах(имя,...

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

Как создать двумерный динамический массив не зная его размеров?
Привет. Не смог найти в гугле как можно создать двумерный динамический...

Как создать указатель на функцию-член класса и вызвать его?
Подскажите как правильно сделать, а в дальнейшем вызвать указатель на функцию...

6
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.10.2013, 16:53 2
ALeXUI_1, Если не определен конструктор копирования - копию создать соответственно нельзя. Можно создать новый объект, если есть подходящий конструктор.
Ну и судя по референсу: http://qwtpolar.sourceforge.net/qwt__polar__plot_8h_source.html конструктор копии не запрещен, следовательно не вижу проблем создать копию.
0
Raali
647 / 350 / 75
Регистрация: 06.07.2013
Сообщений: 1,123
Завершенные тесты: 1
22.10.2013, 16:53 3
QwtPolarPlot это что, виджет какой то?
0
ALeXUI_1
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
22.10.2013, 17:05  [ТС] 4
ForEveR, Я пытался передать в метод создающий новое окно, сразу копию объекта, а не указатель, но сразу сталкивался с ошибками.
Ошибки:
Кликните здесь для просмотра всего текста

c:\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtGui\qframe.h:-1: In copy constructor 'QwtPolarPlot::QwtPolarPlot(const QwtPolarPlot&)':

c:\QtSDK\Desktop\Qt\4.8.0\mingw\include\QtGui\qframe.h:140: ошибка: 'QFrame::QFrame(const QFrame&)' is private

c:\qwtpolar-1.0.1\include\qwt_polar_plot.h:46: ошибка: within this context

C:\Users\Vladimir\Desktop\Kontrolnye_pynkt 16.10.2013\KontrolOfQuality\debug\moc_cIfrnsSNS.cpp:-1: In static member function 'static void cIfrnSns::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':

C:\Users\Vladimir\Desktop\Kontrolnye_pynkt 16.10.2013\KontrolOfQuality\debug\moc_cIfrnsSNS.cpp:57: synthesized method 'QwtPolarPlot::QwtPolarPlot(const QwtPolarPlot&)' first required here

C:\Users\Vladimir\Desktop\Kontrolnye_pynkt 16.10.2013\KontrolOfQuality\debug\moc_cIfrnsSNS.cpp:57: error: initializing argument 1 of 'void cIfrnSns::SlotShowBigMishen(QwtPolarPlot)'


Raali, Да, для отрисовки графиков в полярных координатах
0
Raali
647 / 350 / 75
Регистрация: 06.07.2013
Сообщений: 1,123
Завершенные тесты: 1
22.10.2013, 17:24 5
QObject has neither a copy constructor nor an assignment operator. This is by design. Actually, they are declared, but in a private section with the macro Q_DISABLE_COPY(). In fact, all Qt classes derived from QObject (direct or indirect) use this macro to declare their copy constructor and assignment operator to be private. The reasoning is found in the discussion on Identity vs Value on the Qt Object Model page.

The main consequence is that you should use pointers to QObject (or to your QObject subclass) where you might otherwise be tempted to use your QObject subclass as a value. For example, without a copy constructor, you can't use a subclass of QObject as the value to be stored in one of the container classes. You must store pointers.

вот что пишут, нужно использовать указатели на QObject, как я понимаю это родительский класс виджетов или еще выше
0
ALeXUI_1
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
22.10.2013, 17:28  [ТС] 6
Если добавлю просто указатель, то график пропадет на главном окне. Новое окно служит для увеличения графика. Это типа того, если вы в поисковике картинки ищите, видете маленький варинат, но нажав на картинку открывается большой.
0
Raali
647 / 350 / 75
Регистрация: 06.07.2013
Сообщений: 1,123
Завершенные тесты: 1
22.10.2013, 17:35 7
можно увеличить график, потом передать его обратно в старое окно по закрытии
0
22.10.2013, 17:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2013, 17:35

Создать файл F1, записать в него N чисел, а затем создать его копию - файл F2
Вроде есть все условия, но последние числа перезаписывает: #include...

Дан файл произвольного типа. Создать его копию с новым именем.
Дан файл произвольного типа. Создать его копию с новым именем.Пожалуйста,...

выделить место для объекта с помощью new или создать указатель, объект и присвоить один другому. какая разница?
кроме того что к объекту созданному с помощью new можно будет обращаться только...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru