|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||
Массив шаблонов30.03.2024, 16:40. Показов 4371. Ответов 79
Метки нет (Все метки)
Всем привет
я адинесник прошу не пинать ![]() захотелось как и в адинес добавлять в массив любые типы возникает вопрос можно ли создать или объявить как то массив [] с фиксированной длиной при инициализации указав все элементы но скажем так массив указателей на разные типы. ведь как я понял указатель то имеет одинаковую природу и величину - какая разница на что указывать. т.е хочу создать массив указателей на произвольные объекты, т.е. аналогично шаблон функции
можно ли создать такое типа auto arr[2] ={&s1, $s2}; Добавлено через 2 минуты неожиданно получилось вот так
0
|
|||||||||||
| 30.03.2024, 16:40 | |
|
Ответы с готовыми решениями:
79
Разреженный массив (с использованием шаблонов), исключение оператора посредством SFINAE Массив шаблонов или как обратиться к элементам разного типа, хранящиеся в одном "списке" по индексу Использование шаблонов |
|
"C with Classes"
|
|
| 07.04.2024, 10:30 | |
|
TheCalligrapher, то есть с точки зрения языка указатель это абстракция и в общем случае у этой абстракции нет свойства размер?
1
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|
| 07.04.2024, 11:22 | |
|
_stanislav, здесь есть примеры: https://stackoverflow.com/a/66102654
Добавлено через 25 минут _stanislav, кстати вот здесь еще было обсуждение: double*p показать, что операция p++ передвигает указатель по памяти на определенное кол-во байт впарво Добавлено через 2 минуты Вот еще полезная ссылка для расширения кругозора: https://stackoverflow.com/ques... care-about
2
|
|
|
2684 / 1343 / 483
Регистрация: 08.11.2016
Сообщений: 3,722
|
||||||||||||
| 08.04.2024, 11:52 | ||||||||||||
1
|
||||||||||||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 08.04.2024, 18:55 [ТС] | ||
|
простыни из итераций. на мой взгляд достаточно сложный для понимания пример с reinterpret_cast. двумерные массивы и так занятная штука, как по мне. а вопрос разве если мы просто сделаем free (arr), где arr = int**arr - утечек памяти не образуется? нужно же отработать в цикле все указатели на вложенные массивы
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 08.04.2024, 19:05 | |||
|
(int **) Я сомневаюсь что в 1С есть указатели... Хотя предмет не изучил, знаю лишь что это скриптовый ЯП а значит никаких указателей там не может быть, в априори. Вам действительно стоит посмотреть на ЯП пайтон.
1
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 08.04.2024, 20:23 | ||
|
1
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 08.04.2024, 20:29 | |
|
DrOffset, тема из разряда :
1
|
|
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||||||||||||||||||||||||||
| 08.04.2024, 22:39 [ТС] | |||||||||||||||||||||||||||
![]()
вот совершенно верно я тоже так и думал есть некие данные непрервынй кусок | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | что из них что я не знаю, но я знаю что читаются они слева направо, и например 5 элемент это указатель на класс Serial его объем я тоже знаю 40 байт, без проблем читаю 40 байт
почему нельзя сохранить указатели на объекты разных типов например в массив шаблонов и потом их просто прочитать. к примеру передаю я по радио каналу структуру , или класс, я же так и передаю её
вот кстати радио передача два разных устройства во многих библиотеках к радио модулям естб функции принимают указатель на начало и размер байт. байт он везде байт я чет запутался. Добавлено через 10 минут т.е. получается можно привести указатели на разные объекты к вообще любому типу с помощью
и собственно создать массив таких переделанных указателей из разных типов, но переделать их например в int* и жить себе не тужить? сейчас попробую. если это сработает - то спасибо,ларчик -то просто открывался
0
|
|||||||||||||||||||||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
|||
| 08.04.2024, 22:44 | |||
|
Нельзя игнорировать требования выравнивания к разным типам. Нельзя игнорировать понятие времени жизни объекта. Не любой объект можно вот так запросто представить сырой памятью.
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 08.04.2024, 22:45 | |
|
pup_kin, перестаньтье писать длинные посты ни о чем, что не кассается темы.
Нет конечно, ваш пример ни очем. Все можно привести к void*, ах да не все. Ну это же вам неведомо. А потом вернуть назад тип вы уже не сможете, или нужно передавт список типов, что и делается с помощью stdLLtuple Теперь идем дальше, по вашему, что вы можете типы чередовать и тд и тп, нет не сможете, вам также придется передавать метаинформацию. Ну вобщем у вас беда с восприятием строготипизированного ЯП
1
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 08.04.2024, 22:49 | ||
|
Еще приводили std::variant - это тоже оно, но с другого краю. Хотите свое такое и чтобы было правильно? Надо изучить как оно там реализовано внутри, и поймете если, значит и свое сможете сделать. В противном случае это просто будет хождение по граблям.
1
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
|||
| 08.04.2024, 22:59 [ТС] | |||
|
конечно же
объект - это сущность динамическая, зачастую. просто к примеру у меня есть рабочий код по радиообмену. на модулях NRF2401 и любых других аналогичных. передача данных там осуществляется передается начало и размер. и прием осуществляется указатель на начало переменной и размер в байтах. и нормально передаются структуры, строки, числа, все - не динамическое скажем так. ясное дело объект который был инициализирован и более того выполнил какие-то операции в физическом мире нельзя просто так взять и передать или интерпретировать на другой машине. НО иногда, как я понял - можно ![]() Добавлено через 3 минуты но хочется просто работать с байтами не завязываясь на сторонние библиотеки. спасибо огромное Annemeski за то, что напомнили о приведении типов. мухи указатели отдельно , данные/данные отдельно.
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 08.04.2024, 23:07 | ||
|
Во-вторых, я вам предложил изучить их внутреннее устройство, чтобы не ходить по граблям, а не юзать их непосредственно. Пожалуйста читайте внимательнее. В третьих вы все-таки бежите впереди паровоза. Можете бежать и дальше, я не отговариваю, но просто помните: все, что вы сейчас наваяете, будет неверно процентов на 98 (даже если оно будет работать)
1
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 08.04.2024, 23:16 | |
|
DrOffset, не, ну можно свои типы напридумывать ))
1
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 08.04.2024, 23:22 | ||
|
1
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 08.04.2024, 23:24 [ТС] | ||
|
в ардуино нет stl. есть какие -то решения на эту тему, но они достаточно корявы и проще самому написать. собственно об этом и речь
0
|
||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||
| 08.04.2024, 23:27 | ||
|
1
|
||
|
16 / 18 / 2
Регистрация: 02.03.2024
Сообщений: 510
|
||
| 08.04.2024, 23:29 [ТС] | ||
|
делаю массив с размером загодя и в него загоняю все что нужно, и сам разбираю как уж смогу. это примерно то что и нужно. и достаточно объемлюще. т.е. мне нужен кусок памяти от НАЧАЛА и до КОНЦА весь мой.что хочу туда то и пишу, сам занимаясь разметкой. если кому плюсики забыл - кончились - завтра протыкаю
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 08.04.2024, 23:37 | |
|
0
|
|
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,822
|
||||||||
| 08.04.2024, 23:39 | ||||||||
|
Если с этими данными будет идти работа в памяти, то нужно обеспечить им верное выравнивание, либо читать каждый кусочек данных туда, где это это требование уже обеспечено. Вот пример
0
|
||||||||
| 08.04.2024, 23:39 | |
|
Помогаю со студенческими работами здесь
60
запрет шаблонов С++ использование шаблонов Реализация шаблонов Функции-шаблонов Специализация шаблонов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера»
Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит.
Придуман Биллом Госпером в 1970-х, опубликован в. . .
|
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb">
<style>
<!]>
</ style>
<g id="bush">
</ g>
</ svg>
function fn(){
let rost;/ / высота древа
let xx=165,yy=210,w=256;
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|