|
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
|
|
Как создать копию объекта, зная его указатель?22.10.2013, 16:49. Показов 3727. Ответов 6
Метки нет (Все метки)
Здравствуйте, существует следующая проблема. В своей программе я рисую график используя класс QwtPolarPlot. По нажатию на график, должно открыться новое окно, в котором будет точно такой же график. Хорошим решением было бы либо передать в метод создания окна копию объекта QwtPolarPlot, но в этом классе не определен конструктор копии, поэтому так сделать нельзя. Можно ли как-то решить данную проблему?
Есть ещё один варинат, создать на новом окне объект QwtPolarPlot, получить список всех элементов находящихся на первом графике, и прикрепить к новому объекту, но список элементов получается как список указателей на эти объекты, поэтому прикрепляя их на новый объект, на старом они пропадают. Какждый элемент списка представляет из себя Qlist <QwtPolarItem*>, его объект тоже создать нельзя, т.к QwtPolarItem - абстрактный класс. Как решить эту проблему?)
0
|
|
| 22.10.2013, 16:49 | |
|
Ответы с готовыми решениями:
6
Создать копию объекта производного класса зная указатель на базовый
Как создать копию объекта? |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 22.10.2013, 16:53 | |
|
ALeXUI_1, Если не определен конструктор копирования - копию создать соответственно нельзя. Можно создать новый объект, если есть подходящий конструктор.
Ну и судя по референсу: http://qwtpolar.sourceforge.ne... ource.html конструктор копии не запрещен, следовательно не вижу проблем создать копию.
0
|
|
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
| 22.10.2013, 16:53 | |
|
QwtPolarPlot это что, виджет какой то?
0
|
|
|
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
|
|
| 22.10.2013, 17:05 [ТС] | |
|
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_pyn kt 16.10.2013\KontrolOfQuality\debug\moc_cI frnsSNS.cpp:-1: In static member function 'static void cIfrnSns::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)': C:\Users\Vladimir\Desktop\Kontrolnye_pyn kt 16.10.2013\KontrolOfQuality\debug\moc_cI frnsSNS.cpp:57: synthesized method 'QwtPolarPlot::QwtPolarPlot(const QwtPolarPlot&)' first required here C:\Users\Vladimir\Desktop\Kontrolnye_pyn kt 16.10.2013\KontrolOfQuality\debug\moc_cI frnsSNS.cpp:57: error: initializing argument 1 of 'void cIfrnSns::SlotShowBigMishen(QwtPolarPlot )' Raali, Да, для отрисовки графиков в полярных координатах
0
|
|
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
| 22.10.2013, 17:24 | |
|
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
|
|
|
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
|
|
| 22.10.2013, 17:28 [ТС] | |
|
Если добавлю просто указатель, то график пропадет на главном окне. Новое окно служит для увеличения графика. Это типа того, если вы в поисковике картинки ищите, видете маленький варинат, но нажав на картинку открывается большой.
0
|
|
|
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
|
|
| 22.10.2013, 17:35 | |
|
можно увеличить график, потом передать его обратно в старое окно по закрытии
0
|
|
| 22.10.2013, 17:35 | |
|
Помогаю со студенческими работами здесь
7
Как создать копию объекта Как создать копию объекта любого класса? как создать копию объекта, на который ссылается итератор? Как создать копию или клон объекта массива в Java? Как узнать адрес объекта, не зная его имени? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|