170 похожих чатов

А как можно передать в конструкторы полей класса временный объект

время жизни которого будет ограниченно конструктором класса содержащего поля? Вообще у меня задача такая: есть класс который нужно создать до инициализации статиков (код рантайма, который запускает эту инициализацию под моим контролем), ему при конструировании нужно передать некоторую информацию (потому синглтон подходит плохо), также нельзя пользоваться кучей, поскольку класс, собственно, за неё отчасти и отвечает, вопрос в том как это сделать наименее костыльно

PS: забыл сказать, временный объект нужно передать всем полям, по ссылке, он по задумке не копируемый

14 ответов

9 просмотров

передать параметр по значению? объект будет создан для конструктора и умрёт в конце него

Если временный объект, то это мув-конструктор. Ну или по значению. Интересно что "до инициализации статиков" - это дремучее С. Как Вы туда с++ засунули?

disba1ancer- Автор вопроса
Int Unsigned
Если временный объект, то это мув-конструктор. Ну ...

писать аллокатор на си оказалось не благодарным делом, у меня с мощью плюсов это со скрипом получается, так что да засунул

disba1ancer- Автор вопроса
Int Unsigned
Если временный объект, то это мув-конструктор. Ну ...

я же говорю код рантайма свой, могу до инициализации статиков вызывать любые функции

disba1ancer- Автор вопроса
Ivan Sokolov
передать параметр по значению? объект будет создан...

не могу, этот параметр — ссылка на аллокатор, один конструктор должен им воспользоваться, второй, может его мувнуть (точнее взять его состояние и что-то с ним сделать, но состояние можно описать как moved out), к вопросу, сейчас напишу постскриптум

Ну типо T(U())? Или как?

disba1ancer- Автор вопроса
disba1ancer
под PC

Ха-ха, под ОС хоть?

disba1ancer- Автор вопроса
Т
Ну типо T(U())? Или как?

не так, скорее так: Foo() { Bar bar{}; construct_field1(bar); construct_field2(bar); }

disba1ancer- Автор вопроса
Т
Ха-ха, под ОС хоть?

вот именно, что нет

disba1ancer
не так, скорее так: Foo() { Bar bar{}; constru...

Да никак по сути? Чисто технически у тебя же {} уже и есть "время жизни" Можешь просто попилить код типо { { локально } глобально }

disba1ancer- Автор вопроса
disba1ancer- Автор вопроса

выложил код, для ознакомления с тем, что вообще происходит https://github.com/disba1ancer/kernel/blob/share-25052023/platform/x86_64/alloc.cpp#L891-L905

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Всем привет!) я тут новенький и пытаюсь освоить evolution методом тыка. У меня при переходе между папками файлов выскакивают вот такие уведомления Можете подсказать как их от...
Диман Samoed
10
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Какого хера? /Sources/App/Modules/User/Models/UserLinkApple.swift:21:20: warning: stored property '_id' of 'Sendable'-conforming class 'UserLinkApple' is mutable @ID(...
Alexander Sherbakov
14
Карта сайта