|
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 10
|
||||||
Создать объект, который мог бы принимать в себя любой тип данных10.09.2016, 18:48. Показов 2403. Ответов 10
Метки нет (Все метки)
Object ten = 10;
Object str = "string"; Такая запись обязательна. То есть тип данных должен быть определен в шаблоне конструктора (я так предполагаю). В общем всё, что мне пришло в голову это создать ссылку на неопределенный тип, но если вывести адрес ссылок то для всех объектов они одинаковы. Значит ли это, что при создании объекта старые данные стираются и записываются в один и тот же адрес? И ещё, даже если удастся создать ссылки неопределённого типа на значения, которые были переданы в конструктор, как можно их потом вытащить из этих ссылок?
0
|
||||||
| 10.09.2016, 18:48 | |
|
Ответы с готовыми решениями:
10
Реализовать C++ объект, который предоставил бы возможность менять тип данных во время исполнения Можно ли создать тип, который бы включал в себя операции сравнения(=, <>, <, >, >=, <=)? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 10.09.2016, 20:21 | |
|
0
|
|
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|||||||
| 10.09.2016, 22:04 | |||||||
|
Как пользоваться тут. Как раз твой случай:
0
|
|||||||
|
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
|
|||||||||||
| 10.09.2016, 22:06 | |||||||||||
выглядит странно, т.к. в меине после 27 строки стек должен изменится. но, может на стеке как-то заранее выделили память в стеке под переменные Object и только потом пошли работать конструкторы. и еще надо понимать, как вызываются конструкторы, что там в стеке происходит и т.п. короче, в таком коде адрес локальной пемеренной может вполне законно быть одним и тем же. если добавить функцию и в ней сделать то же самое, то адрес оказывается уже другой, т.к. вызов функции изменяет вершину стека:
ptrValue = &obj; // уберите & впрочем, это было объяснение того, почему адреса оказываются одинаковыми. а как сделать то, что изначально было задумано - это уже отдельная история.
1
|
|||||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||
| 11.09.2016, 13:28 | ||||||
|
Bazzzigna, если не сильно утруждаться, то можно придумать что-то такое:
Кликните здесь для просмотра всего текста
Онлайн пример: http://rextester.com/BVY44426
6
|
||||||
|
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
|
||||||
| 01.12.2016, 16:44 | ||||||
|
DrOffset, очень хотелось покопаться в Вашем последнем примере из #5. Но мой компилятор сразу-же
начал ругаться на строку #9 -
Я так понял, что он не понимает - default. Я компилирую в RAD Studio XE3. Подскажите пожалуйста, в чем может быть ошибка, чего в моей системе может не хватать ?
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 01.12.2016, 22:05 | ||
|
Я уже довольно давно не слежу за продуктами Borland\Embarcadero, но беглый поиск дал информацию о приемлемой поддержке С++11 лишь в версии RAD Studio 10 Seattle. В принципе можно и пример переделать под С++03, если использовать boost, то будет совсем легко.
1
|
||
|
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
|
||||||
| 02.12.2016, 13:54 | ||||||
|
DrOffset, прошу еще раз прощения за беспокойство. Не могу раскрутить в своем
C++03 вот такую Вашу конструкцию:
Подскажите пожалуйста, как это можно представить в моем случае ?
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||
| 02.12.2016, 15:27 | ||||||
|
Staut, final можно просто убрать.
Сложность заключается в том, что до С++11 в union`ах нельзя было размещать объекты нетривиальных типов. А здесь именно это свойство используется для запрета вызова конструкторов по умолчанию для массива (в случае, если тип в union нетривиальный, нужно самому контролировать порядок создания и уничтожения его объекта - это нам на руку). В твоем случае нужно будет union заменить на что-то другое. Например на boost::aligned_storage. Кликните здесь для просмотра всего текста
1
|
||||||
|
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
|
||||||
| 02.12.2016, 16:10 | ||||||
|
- Огромное спасибо DrOffset, но все равно жалуется на эту строку:
Т.е. он ждет после параметра E - закрывающей угловой скобки. Он в моей маленькой версии C++xx не понимает выражения: (E = ). Видимо не судьба ...
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||||||
| 02.12.2016, 16:46 | |||||||
|
Сделай так:
1
|
|||||||
| 02.12.2016, 16:46 | |
|
Помогаю со студенческими работами здесь
11
Как правильно создать и инициализировать наследника QGraphicsItem, чтоб они мог принимать сигналы QMainWindow?
Описать графический объект, который представляет из себя изображение папки Как реализовать метод, который превратит любой объект в byte[] ?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|