|
1 / 1 / 0
Регистрация: 20.09.2018
Сообщений: 63
|
||||||
Оператор преобразования типа для неконстантной ссылки23.09.2023, 15:00. Показов 2141. Ответов 52
Здравствуйте. Я работаю над большим приложением, задействующим несколько сторонних библиотек. В каждой библиотеке реализован свой класс математического вектора. При этом, структуры и методы из этих библиотек в моем приложении обмениваются данными в виде этих векторов. То есть, я могу получить вектор методом из одной библиотеки, а потом передать его методу в другую библиотеку.
Для того, чтобы каждый раз не преобразовывать один вектор в другой (суть их одна и та же: три компоненты - x, y, z), я сделал класс-адаптер, в котором перегрузил операторы преобразования типа, которые могут возвращать созданные объекты-векторы из обеих библиотек по значению или по константной ссылке, все прекрасно работает. Теперь появились методы, которые хотят принимать неконстантную ссылку на вектор, и я не совсем понимаю, как мне быть. Мой адаптер выглядит примерно так:
0
|
||||||
| 23.09.2023, 15:00 | |
|
Ответы с готовыми решениями:
52
Оператор динамического преобразования типа возвращает ссылку NULL |
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
||
| 24.09.2023, 14:58 | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 24.09.2023, 15:01 | ||
|
1
|
||
|
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
|
|
| 24.09.2023, 15:10 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 24.09.2023, 15:11 | |
|
1
|
|
|
1 / 1 / 0
Регистрация: 20.09.2018
Сообщений: 63
|
|
| 24.09.2023, 18:09 [ТС] | |
|
Последний вопрос: можно как-то этот юнион подружить с указателями на векторы... У меня там forward declaration..
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 24.09.2023, 18:11 | ||
|
Можно конечно этот пример шаблонизировать и отложить инстанцирование до момента появления этих объвлений, но тогда смысл в этом велосипеде еще больше потеряется.
2
|
||
|
1 / 1 / 0
Регистрация: 20.09.2018
Сообщений: 63
|
|
| 24.09.2023, 18:11 [ТС] | |
|
Понял, еще раз большое спасибо
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 25.09.2023, 00:42 | |
|
0
|
|
|
Комп_Оратор)
|
|||||||
| 25.09.2023, 18:21 | |||||||
|
danascully, это скелет. Нет неймспейса, всё открыто. Нет нужных функций-членов, исключение не от std::exception и тд. и тп. Я бы ещё pimpl холдером обернул для получения возможности работы по значению. Так что мои ссылки на разыменованные указатели в куче, примите как быструю демонстрацию)
0
|
|||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 25.09.2023, 20:25 | ||
![]() У вас в коде dangling-references образованы в конструкторе BaseAdapter12, видимо поэтому и отказывался собирать.
2
|
||
|
Комп_Оратор)
|
||||||||||||
| 25.09.2023, 21:01 | ||||||||||||
![]() Это меня смутило. Потом я позвал MSVS C++ компилятор и тот молча всё сделал. Что касается наговора, то не имею такой привычки. А версия MinGW старовата, да. Может в этом дело и более современные не страдают таким изъяном. Я держу этот, потому что он совместим с хрюшей на другой машинке. И да. Подобный глюк мне уже приходилось видеть. Но там иной код. А ссылки инициализируются в конструкторе. Других путей инициализации для данного класса нет и вроде, всё нормально. Или нет?
0
|
||||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 25.09.2023, 21:21 | ||
|
Добавлено через 8 минут IGPIGP, но я не понял, чем ваш пример поможет ТС ? Немного размышлений о его подходе и желаниям, привели к тому, что он пытается сделать противоестественное поведение, несущее в себе некую неопределенность. Даже если такое организовать, накладные расходы будут велики, и к тому же, могут не принести удобства, а наоборот. Пусть приводит типы явно и прозрачно, как положено. Пусть следить за тем кто, где и сколько живет.
1
|
||
|
Комп_Оратор)
|
|||
| 25.09.2023, 21:29 | |||
|
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 25.09.2023, 21:32 | |
|
1
|
|
|
Комп_Оратор)
|
||
| 25.09.2023, 21:46 | ||
|
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 25.09.2023, 21:55 | ||
|
IGPIGP,
В вашем примере - UB, как он может что - то демонстрировать. Откланяюсь.
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 25.09.2023, 22:05 | |||
|
0
|
|||
|
Комп_Оратор)
|
||||||
| 25.09.2023, 22:38 | ||||||
|
SmallEvil, иметь невладеющую ссылку - поле класса, это не бест практикс, но применимо тогда, когда нужно. ТС потому и спрашивает о указателях в Union, поскольку преобразования снижают эффективность. Ему нужен, как я понял именно класс представления. А уж как он собирается хранить оригиналы и обеспечивать валидность представлений, - его вопрос. Но, - всего доброго) Добавлено через 7 минут
0
|
||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 25.09.2023, 22:50 | |||
|
Наводящий вопрос вам уже задали:
0
|
|||
| 25.09.2023, 22:50 | |
|
Определить оператор преобразования типов из типа дробь в тип double
Оператор преобразования типа и его эквивалентные замены, поиск строки в текстовом файле , содержащей заданный
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|