|
Я не улыбаюсь.
-8 / 1 / 0
Регистрация: 10.03.2020
Сообщений: 102
|
||||||
Массив указателей на объекты наследуемых классов11.05.2020, 21:26. Показов 2802. Ответов 29
Добрый день!
Класс Patircle по задаче должен быть абстрактным, у него два наследника. В задаче сказано "В программе должен быть определён основной класс система, содержащий массив указателей на объекты-частицы". Пожалуйста, посмотрите ниже по тексту, направляю вам часть программы. Вопросы: 1. Проверьте пожалуйста правильно ли я написал класс System? 2. Если я буду использовать std::vector<Particle*> particles; как #include <vector> облегчит мне жизнь? Никогда им не пользовался. 3. Как реализовывается доступ к объектам-частицам(наследуемых классов) через указатель(Particle*) на базовый(абстрактный класс)? Буду рад почитать литературу на эту тему. Может быть вы еще что то заметите.
0
|
||||||
| 11.05.2020, 21:26 | |
|
Ответы с готовыми решениями:
29
Виртуальные функции (создать массив указателей на объекты трех классов) |
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|||||||
| 22.05.2020, 01:24 | |||||||
|
Должно быть так:
1
|
|||||||
|
Комп_Оратор)
|
||||||||||||||||
| 22.05.2020, 01:36 | ||||||||||||||||
![]() Glbvnts, я не могу ответить на 100 вопросов. Лучше в одном посте 1-2. К тому же другим, это читать совершенно не в жилу. Давайте по кусочку разбирать. Но в принципе, это не верно с методологической (правильной пацанской) точки зрения, учить за день, в боевом режиме то, на что отводятся месяцы. Толку не будет. Почти. Я закругляюсь, так как вижу что вы продолжаете дописывать вопросы. Давайте по одному. Но более менее обстоятельно. Ок?
0
|
||||||||||||||||
|
Комп_Оратор)
|
||||||||||||
| 22.05.2020, 09:36 | ||||||||||||
) и он не вызывал особых сомнений:
![]() Написал плохо:
0
|
||||||||||||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 22.05.2020, 09:44 | ||
|
1
|
||
|
Комп_Оратор)
|
||
| 22.05.2020, 09:47 | ||
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 22.05.2020, 09:56 | ||
|
std::initializer_list при использовании по прямому назначению всегда лучше передавать по значению. Это тип со ссылочной семантикой, он для этого и разработан.
1
|
||
|
Я не улыбаюсь.
-8 / 1 / 0
Регистрация: 10.03.2020
Сообщений: 102
|
||
| 22.05.2020, 14:15 [ТС] | ||
|
In file included from /usr/include/x86_64-linux-gnu/c++/7/bits/c++allocator.h:33:0, from /usr/include/c++/7/bits/allocator.h:46, from /usr/include/c++/7/string:41, from /usr/include/c++/7/bits/locale_classes.h:40, from /usr/include/c++/7/bits/ios_base.h:41, from /usr/include/c++/7/ios:42, from /usr/include/c++/7/ostream:38, from /usr/include/c++/7/iostream:39, from /home/ivantsov/cpp/task2.cpp:1: /usr/include/c++/7/ext/new_allocator.h: In instantiation of ‘void __gnu_cxx::new_allocator<_Tp>::construct (_Up*, _Args&& ...) [with _Up = std::unique_ptr<Particle>; _Args = {const std::unique_ptr<Particle, std::default_delete<Particle> >&}; _Tp = std::unique_ptr<Particle>]’: /usr/include/c++/7/bits/alloc_traits.h:475:4: required from ‘static void std::allocator_traits<std::allocator<_Ch arT> >::construct(std::allocator_traits<std:: allocator<_CharT> >::allocator_type&, _Up*, _Args&& ...) [with _Up = std::unique_ptr<Particle>; _Args = {const std::unique_ptr<Particle, std::default_delete<Particle> >&}; _Tp = std::unique_ptr<Particle>; std::allocator_traits<std::allocator<_Ch arT> >::allocator_type = std::allocator<std::unique_ptr<Particle> >]’ /usr/include/c++/7/bits/stl_vector.h:943:30: required from ‘void std::vector<_Tp, _Alloc>: ush_back(const value_type&) [with _Tp = std::unique_ptr<Particle>; _Alloc = std::allocator<std::unique_ptr<Particle> >; std::vector<_Tp, _Alloc>::value_type = std::unique_ptr<Particle>]’/home/ivantsov/cpp/task2.cpp:63:91: required from here /usr/include/c++/7/ext/new_allocator.h:136:4: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = Particle; _Dp = std::default_delete<Particle>]’ { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ In file included from /usr/include/c++/7/memory:80:0, from /home/ivantsov/cpp/task2.cpp:3: /usr/include/c++/7/bits/unique_ptr.h:383:7: note: declared here unique_ptr(const unique_ptr&) = delete;
0
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
||
| 22.05.2020, 21:54 | ||
|
У std::initializer_list есть только константные begin\end, я что-то позабыл этот момент, отвлёкшись на константность ссылки в примере. Поэтому в целом std::initializer_list на данном этапе в принципе не приспособлен, чтобы оперировать move-only типами, такими как unique_ptr. Досадно, но факт. Если вы хотите оставить этот вариант, то хак с сonst_cast - не то, чтобы правильно, но один из немногих способов этого добиться. Второй способ использовать идиому in (что тоже в некотором роде хак, но более изощренный). Если интересно, есть вот такое предложение, для исправления этой ситуации: http://open-std.org/jtc1/sc22/... /n4166.pdf, в идеале нечто подобное могло бы обеспечить наиболее правильное решение.
0
|
||
|
Я не улыбаюсь.
-8 / 1 / 0
Регистрация: 10.03.2020
Сообщений: 102
|
||
| 23.05.2020, 00:00 [ТС] | ||
|
DrOffset, спасибо, буду разибираться. Хотя так и хочется задать глупые вопросы
![]() Добавлено через 43 секунды
0
|
||
| 23.05.2020, 00:00 | |
|
Из трех наследуемых классов получить массив родителя Массив указателей на объекты Динамический массив указателей на объекты Массив указателей на объекты подклассов Динамический массив указателей на объекты класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса
Калибровка параметров симбиотической модели: технический обзор
Содержание:
Введение
Постановка проблемы
Технические аспекты реализации
Процесс внедрения изменений
|
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0»
https:/ / ibb. co/ NnkGpfMd
Представленная интегрированная схема описывает непрерывную нелинейную. . .
|
|
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы
### Аннотация
Представлено исследование по разработке агентной модели микоризной. . .
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|