|
3 / 3 / 0
Регистрация: 29.04.2021
Сообщений: 14
|
||||||||||||||||
Использование косвенного невиртуального базового класса не допускается19.05.2021, 20:21. Показов 6479. Ответов 47
Есть родительский класс being, есть дочерний monsterlike, есть дочерний класс образовавшийся от этого дочернего ogr. Для переменных в род. классе создан конструктор чтобы можно было их инициализировать в дочерних классах, чтобы не повторять их каждый раз. С 1-м доч. классом та же история. Однако в 2-м доч. клас. возникла ошибка с конструктором род. класса которую я написал в названии темы. При этом с конструктором 1-го доч. класса всё в порядке. Спросил у знакомого опытного программиста, он сказал "присваивай значения только в главном классе, а в доч. просто подставляй под них всё что нужно". Но мне кажется это не то что мне нужно, да и сомневаюсь что так будет удобно для дальнейшего исп. программы.
being.h
0
|
||||||||||||||||
| 19.05.2021, 20:21 | |
|
Ответы с готовыми решениями:
47
Использование метода из наследованного класса к объекту базового класса Использование перегруженного оператора ввода/вывода в поток базового класса для объекта производного класса |
|
2739 / 1665 / 267
Регистрация: 19.02.2010
Сообщений: 4,406
|
|
| 19.05.2021, 21:26 | |
|
1
|
|
|
Комп_Оратор)
|
|||||||
| 20.05.2021, 00:16 | |||||||
Сообщение было отмечено Genidit как решение
Решение
Добавлено через 11 минут Genidit, а использование невиртального наследования при попытке динамического кастования или динамического определения типа может вызвать ошибку (вызовет обязательно) . Определите виртуальный метод (и деструктор).
1
|
|||||||
|
3 / 3 / 0
Регистрация: 29.04.2021
Сообщений: 14
|
|
| 20.05.2021, 19:07 [ТС] | |
|
IGPIGP
Если я вставляю этот код (где параметры передаются через конструктор) то выскакивают ошибки "недопустимый тип для битового поля", "требуется идентификатор", "идентификатор "X" не определен".
0
|
|
|
Комп_Оратор)
|
||
| 20.05.2021, 21:54 | ||
|
0
|
||
|
Вездепух
13179 / 6815 / 1821
Регистрация: 18.10.2014
Сообщений: 17,243
|
||
| 21.05.2021, 00:18 | ||
|
1
|
||
|
3 / 3 / 0
Регистрация: 29.04.2021
Сообщений: 14
|
|||||||||||||||||||||
| 22.05.2021, 17:20 [ТС] | |||||||||||||||||||||
|
Простите, видимо я не правильно сформулировал свой изначальный вопрос. Мне нужно сделать так чтобы я мог присвоить другие какие-либо свои значения в конструкторах родительского (being) и дочернего (monsterlike) в 2-м дочернем классе (ogr). Я уже разузнал что это можно сделать только через виртуальное наследование, исправил и там где надо добавил слово virtual. Теперь первый конструктор :
Однако теперь компилятор жалуется на второй конструктор:
Как подсказали выше, я пытаюсь здесь сделать 2 конструктора по умолчанию, что является ошибкой, но как сделать по другому здесь не знаю. По поводу файлов реализации (только фрагменты с реализацией конструкторов): being.cpp
main пустой. (не буквально естественно а в том плане что там нет ничего чтобы могло вызвать ошибку)
0
|
|||||||||||||||||||||
|
3 / 3 / 0
Регистрация: 29.04.2021
Сообщений: 14
|
|
| 22.05.2021, 17:56 [ТС] | |
|
Код - C2535
0
|
|
|
3 / 3 / 0
Регистрация: 29.04.2021
Сообщений: 14
|
||||||
| 22.05.2021, 20:16 [ТС] | ||||||
|
Как тогда мне задать значения в
0
|
||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|
| 23.05.2021, 01:51 | |
Сообщение было отмечено Genidit как решение
Решение
1
|
|
|
Комп_Оратор)
|
||
| 23.05.2021, 04:41 | ||
|
DrOffset, в конструкторе
1
|
||
|
3 / 3 / 0
Регистрация: 29.04.2021
Сообщений: 14
|
|
| 23.05.2021, 08:47 [ТС] | |
|
DrOffset, Спасибо, сработало. IGPIGP, и вам спасибо тоже.
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
|||
| 23.05.2021, 13:01 | |||
|
0
|
|||
|
Комп_Оратор)
|
||
| 23.05.2021, 13:31 | ||
|
Но я не понял, зачем параметры родителей не проводятся через параметры наследников. Почему нужно хардкодить значения когда можно задать по умолчанию если нужно. И как (это же не множественное наследование) будут работать неявный вызов конструктора наследника и его явный вызов в общем списке инициализации. Где-то описана эта "магия"? Я понимаю, что можно разрешить компилятору выбрать явный вызов конструктора (по записи). Просто не встречал такого и не знаю где это может быть необходимо (от слова нельзя обойти другим путём). Потому как мне неизвестны случаи когда нормальной проводкой аргументов через параметры по иерархии нельзя что-то сделать. Вот и хочется понять. DrOffset, тема имеет достаточно разумное название ( сообщение компилятора ) и приведёт к росту популярности. Но выиграет ли форум от того как она раскрыта? Поэтому и спрашиваю.
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
|
||
| 23.05.2021, 13:59 | ||
|
IGPIGP, это всё не ко мне вопросы.
Добавлено через 3 минуты А вопросы про целесообразность тут виртуального наследования в принципе надо задавать, я повторюсь, не мне, а автору темы.
0
|
||
|
3 / 3 / 0
Регистрация: 29.04.2021
Сообщений: 14
|
|
| 23.05.2021, 15:10 [ТС] | |
|
Извините, но я совершенно недостаточно опытен чтобы участвовать в таких дискуссиях, так как могу наговорить испанского стыда, мне всего лишь нужно было решить мой вопрос, вы помогли его решить и всё. Это раздел C++ для начинающих.
1
|
|
| 23.05.2021, 15:10 | |
|
Помогаю со студенческими работами здесь
20
Использование переменных базового класса в дочернем классе Использование в производных классах методов базового класса с другой сигнатурой Использование конструктора базового класса при динамическом выделении памяти Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|