17 / 17 / 2
Регистрация: 29.10.2013
Сообщений: 269
|
|
1 | |
Узнать имя базового класса09.05.2020, 12:47. Показов 3387. Ответов 10
Есть базовый класс А. От него наследуются классы В и С.
Как узнать, что В и С наследуются именно от А? Я знаю про std::type_info.name(), но он показывает имя текущего класса.
0
|
09.05.2020, 12:47 | |
Ответы с готовыми решениями:
10
Как узнать тип производного класса в функции базового Как узнать имя экземпляра класса? Вызов метода производного класса через обращение к методу базового класса Создать объект производного класса с передачей параметров в конструктор базового класса |
Вездепух
12798 / 6674 / 1796
Регистрация: 18.10.2014
Сообщений: 16,894
|
|
09.05.2020, 12:54 | 2 |
Что значит "узнать"? Зачем? В каком контексте? Что именно вы пытаетесь сделать?
Список базовых классов - информация времени компиляции. Ее не нужно "узнавать" - она и так заранее известна.
0
|
Комп_Оратор)
|
|
09.05.2020, 12:58 | 3 |
Сообщение было отмечено nublin1 как решение
Решение
Ечсли кастится автоматически и не is_same то это оно. У Александреску Современное проектирование на С++ показано хорошо. Посмотрите. Хотя есть и стандартные:
https://ru.cppreference.com/w/cpp/types/is_base_of но для наглядности советую Александреску посмотреть, также . Это признанная нестареющая классика.
1
|
17 / 17 / 2
Регистрация: 29.10.2013
Сообщений: 269
|
|
09.05.2020, 12:59 [ТС] | 4 |
хотел написать шаблонную функцию, которая добавляет передаваемый класс в 1 из массивов, в зависимости от его типа. Просто что бы, не проверять все, скажем, фигуры, а только их базовый класс
0
|
Комп_Оратор)
|
|
09.05.2020, 13:48 | 5 |
Вы в псевдо коде покажите хотя бы, а то по русски оно не слагается.
1 Что принимает функция?//она разнотипные указатели не может же? Или void * - но это С и наследование в болото? 2 Что делает с тем что приняла? 3 Если что-то возвращает - что?
0
|
17 / 17 / 2
Регистрация: 29.10.2013
Сообщений: 269
|
||||||
09.05.2020, 14:27 [ТС] | 6 | |||||
Хотелось бы что то вроде этого:
0
|
Комп_Оратор)
|
||||||
09.05.2020, 17:07 | 7 | |||||
А - понял кажись, - есть два базовых в промежуточной ступени?
Чтобы разобрать их наслеников нужно проверять по RTTI погуглите, почитайте и возвращайтесь. Добавлено через 53 минуты Это вам рано. Если вы и впрямь позаталкиваете детей в родительские гробики - отрежете им ноги. Тут указатели нужны. Причём что-то из смартов - unique_ptr может быть. Но тогда разобрать по категориям будет маловато. Тут фабрички надо писать и билдер над ними какой-то. Разбироать придётся конкретно так как конструкторы виртуальными не бывают. Вот простой код считающий овец прыгающих через плетень:
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
||||||
09.05.2020, 17:19 | 8 | |||||
1
|
Комп_Оратор)
|
||||||
09.05.2020, 18:28 | 9 | |||||
Ну то есть да, если указатели на вызывающей стороне уже инициализированы, то можно и с владением разобраться.
0
|
17 / 17 / 2
Регистрация: 29.10.2013
Сообщений: 269
|
||||||
09.05.2020, 19:31 [ТС] | 10 | |||||
Эм.. А вот вроде короткая запись. И работает (если объект unique_ptr )
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
09.05.2020, 20:02 | 11 |
В частном случае только работает. Если вы добавите еще одну условие (как вы первоначально хотели), то работать перестанет в случаях, когда С не совместим с одним из типов контейнера.
И в этом коде еще одна проблема: срезка. В результате может получиться совсем не то, что вы хотели бы (хоть внешне и выглядит рабочим).
0
|
09.05.2020, 20:02 | |
09.05.2020, 20:02 | |
Помогаю со студенческими работами здесь
11
Почему объект производного класса не видит префиксный оператор из базового класса? Как сложить объект базового класса с объектом производного(наследуемого класса) Перегрузка оператора >> для дочернего класса от базового виртуального класса Создание указателя типа базового класса на экземпляр производного класса Указатель на объект базового класса и адрес объекта производного класса Вызвать конструктор производного класса без конструктора базового класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|