|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
[template] почему код не компилируется без конструктора15.03.2017, 18:53. Показов 1544. Ответов 5
Метки нет (Все метки)
добрый вечер.
вопрос поместил прямо в коде. http://rextester.com/AESO94403
0
|
||||||
| 15.03.2017, 18:53 | |
|
Ответы с готовыми решениями:
5
Почему не компилируется код Инициализация с помощью конструктора без параметров. Почему не нужны скобки?
|
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
| 15.03.2017, 19:36 | |
|
Но это же очевидно. A и const A - не один и тот же тип, поэтому если B - шаблон класса, то B<A> и B<const A> - уже совсем разные типы, независимые друг от друга и друг с другом не связанные. Приведение из одного в другой придётся писать явно. А лучше подсуетиться снаружи и снимать const с параметра шаблона.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 15.03.2017, 23:14 [ТС] | |||||||
class iterator: public detail::iterator<Container>в итоге унаследуется от:
template<class Container, dFOR_CONST> class iterator поэтому, очевидно, что не константная версия - наследник от константной. почему не срабатывает неявное приведение к предку?
0
|
|||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|
| 16.03.2017, 03:52 | |
|
hoggy, В принципе, Nick Alte, все правильно сказал. Это
detail::iterator<vec> и detail::iterator<const vec> находятся в одной иерархии. А вот ::iterator<vec> и ::iterator<const vec> - нет.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||
| 16.03.2017, 12:36 [ТС] | |||||||||||||
::iterator<vec> унаследован от detail::iterator<const vec>::iterator<const vec> унаследован от detail::iterator<const vec>detail::iterator<const vec>имеет конструктор копии. при запуске функции, которая принимает ссылку на базовый классс, прямой наследник должен быть неявно к нему приведен. поэтому, ::iterator<vec> должен был быть приведен к detail::iterator<const vec>следующий код иллюстрирует это положение: http://rextester.com/YKFOX52726
и non_const_iterator неявно кастится к iterator если бы iterator и non_const_iterator не были бы связанны прямыми родственными узами, мы бы получили ошибку компиляции: iterator не имел бы права залезть в приватные данные non_const_iterator однако, non_const_iterator успешно кастится к iterator, а iterator доступны приватные данные других iterator так что вопрос остается в силе: зачем был нужен явный конструктор, если оно итак может и должно кастиццо к предку?
0
|
|||||||||||||
|
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
|
|||||||
| 16.03.2017, 17:06 | |||||||
Сообщение было отмечено hoggy как решение
РешениеВот ваш код, упрощенный до предела:
A(const A&) превратится в C(const C&), как сказано в A(const B&) который унаследуется в C без изменений. Ответ остается тем же. Классы не в одной иерархии.
3
|
|||||||
| 16.03.2017, 17:06 | |
|
Помогаю со студенческими работами здесь
6
О специализации шаблона: почему код компилируется? Компилируется без ошибок, но командная строка, почему то, сразу же закрывается Как работает данный код? И почему не компилируется? Почему указанный код не компилируется в Visual Studio?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|