Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 18.09.2018
Сообщений: 4

Восходящее преобразование массива производного класса к родительскому?

03.01.2020, 22:54. Показов 6972. Ответов 114

Студворк — интернет-сервис помощи студентам
Есть два класса base_Class(родитель) и derived_Class(потомок)
Есть некая виртуальная функция в base_Class которая принимает в качестве параметра массив объектов класса f(base_Class **mass)
Чтобы воспользоваться данной функцией для производного класса, необходимо привести массив производного класса к массиву родительского
Массивы: base_Class *baseMass[100], derived_Class *derivedMass[100]
Как произвести такое приведение типов?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.01.2020, 22:54
Ответы с готовыми решениями:

Определить обработчик исключений на преобразование указателя базового класса на указатель производного класса
Класс В является производным от класса А. Определить обработчик исключительной ситуации на преобразование указателя базового класса А на...

Восходящее преобразование
помогите пожайлуста разобраться, почему выдаёт ошибку... public class A{ public int f1(){return 1;}; public int...

Восходящее преобразование, объяснить код
Всем привет! Мне не понятен один момент в восходящем преобразовании. Есть два класса: один базовый, другой производный от базового. В...

114
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
04.01.2020, 23:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от rat0r Посмотреть сообщение
Никак.
hoggy, UB
rat0r, преобразование массива к указателю на первый элемент, вы полагаете некорректным?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
05.01.2020, 00:04
rat0r, в книге Programming: Principles and Practice Using C++ Страуструп проделывает такой же фокус(глава 25.4), и никакой проверки (reinterpret_cast<base**>(0) + 1) == reinterpret_cast<base**>(reinterpret_cast<der**>(0) + 1)(ну или как там можно это проверить и вообще можно ли) не делает. Получается папа учит детишек говнокодить?
1
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
05.01.2020, 00:31
Цитата Сообщение от hoggy Посмотреть сообщение
UB - неопределенное поведение.
в данном случае поведение - определенное.
В данном случае поведение неопределённое.
Цитата Сообщение от hoggy Посмотреть сообщение
и корректное, поскольку приводит к нужному результату именно так,
как оно изначально и задумывалось.
Ожидаемый тобой результат ≠ определённое поведение. В рамках UB возможно любое поведение, в т.ч. ожидаемое именно тобой (пусть даже не только тобой).
Цитата Сообщение от hoggy Посмотреть сообщение
о каком таком неопределенным поведении ты толкуешь
О котором явно сказано в https://timsong-cpp.github.io/... expr.add#6
Цитата Сообщение от hoggy Посмотреть сообщение
учитывая, что в данной ситуации поведение совершенно точно определенно
Совершенно точно указаны условия, в результате выполнения которых "the behavior is undefined". И эти условия совершенно точно выполнены. Так что, поведение совершенно точно неопределённое.
Цитата Сообщение от hoggy Посмотреть сообщение
Разве я это заявляю?
конечно.
ты не заметил что обозначил ситуацию как UB,
невзирая на то, что поведение полностью определенно?
Похоже, ты бредишь.

Цитата Сообщение от hoggy Посмотреть сообщение
только потому что так написанно в твоей книжке.
безотносительно к причинам настоящих UB,
о которых в этих твоих книжках скромно умалчивается?
Ты хотел пруф UB — ты его получил.
А причины по которым какую-то ситуацию обозначили как UB — это другой вопрос (и банально манёвр в сторону ).
Цитата Сообщение от hoggy Посмотреть сообщение
на красный свет нельзя идти потому, что можно попасть в аварию?
или просто потому что так написанно в книге?
Административным правонарушением является только переход на красный свет в результате которого произошла авария или просто переход на красный?
То-то и оно.
Так что, UB это когда явно написано что UB или явное описание поведения отсутствует (неявное UB). А не когда сегфолт (или что ещё тобой неожиданное) случается.
Цитата Сообщение от hoggy Посмотреть сообщение
задай этот вопрос тому, кто такое утверждает.
Так это ты писал про некие легальные преобразования типов.

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
преобразование массива к указателю на первый элемент, вы полагаете некорректным?
Я полагаю, что стоит обновить страницу с данным топиком и почитать мои более свежие, чем цитируемое, сообщения.

Добавлено через 2 минуты
Цитата Сообщение от zayats80888 Посмотреть сообщение
в книге Programming: Principles and Practice Using C++ Страуструп проделывает такой же фокус
Ты считаешь цитату из книжки Страуструпа контраргументом к написанному в стандарте?
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
05.01.2020, 00:39
Цитата Сообщение от rat0r Посмотреть сообщение
Ты считаешь цитату из книжки Страуструпа контраргументом к написанному в стандарте?
Нет, я вроде спросил о другом...
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.01.2020, 00:40
Цитата Сообщение от rat0r Посмотреть сообщение
Я полагаю, что стоит обновить страницу с данным топиком и почитать мои более свежие, чем цитируемое, сообщения.
В приведенной цитате говорится о массиве который содержит объекты наследующего класса и попытке использовать указатель базового класса для доступа и арифметики как я понял.
For addition or subtraction, if the expressions P or Q have type “pointer to cv T”, where T and the array element type are not similar, the behavior is undefined. [ Note: In particular, a pointer to a base class cannot be used for pointer arithmetic when the array contains objects of a derived class type.  — end note 
Это не имеет отношения к случаю когда мы имеем массив указателей базового класса. И не только базового, - любого. Это просто массив указателей на любой тип. И тут неважно что указатели инициализированы адресами динамически-разных типов.
Мне кажется я задал верный вопрос изначально. Независимо от дальнейшего обсуждения.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
05.01.2020, 00:55
Цитата Сообщение от zayats80888 Посмотреть сообщение
Получается папа учит детишек говнокодить?
Можно и так это сказать, если есть желание.
Цитата Сообщение от IGPIGP Посмотреть сообщение
В приведенной цитате говорится о массиве который содержит объекты наследующего класса и попытке использовать указатель базового класса для доступа и арифметики как я понял.
Это говорится в том куске, который ты выделил жирным. А цитата этим куском не ограничивается.
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это не имеет отношения к случаю когда мы имеем массив указателей базового класса.
Выделенный жирным текст примечения не имеет отношения, а нормативный текст — имеет.
0
 Аватар для stzer
140 / 110 / 60
Регистрация: 26.10.2013
Сообщений: 314
05.01.2020, 01:10
rat0r, нормативный текст, приведенный вами, не имеет никакого отношения к коду hoggy. Поэтому действительно не понятно, что именно вы пытаетесь доказать.
1
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
05.01.2020, 01:18
Цитата Сообщение от stzer Посмотреть сообщение
нормативный текст, приведенный вами, не имеет никакого отношения к коду hoggy.
Ты забыл дописать "мамой клянусь".
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.01.2020, 01:33
Цитата Сообщение от rat0r Посмотреть сообщение
Ты забыл дописать "мамой клянусь".
Без этого вам не по понятию? У меня вполне средний английский и я согласен с stzer.
rat0r, вы запостите сюда тот фрагмент который имеете ввиду за
Цитата Сообщение от rat0r Посмотреть сообщение
нормативный текст
клясться не нужно. Переводить тоже. Мы сами переведём. Просто покажите то место.
Как я перевёл P и Q это адресные выражения указывающие на элементы одного массива. И говорится от том, что они (любой из них) должны иметь базовый тип совместимый с типом элемента и квалификаторы должны поддерживать "симиларити". Это мне нужно ещё перечитать (стандарт пишут мрачные садисты, которые гордятся своими IQ, хотя читая по настоящему базовые концепции я не вижу оснований). То есть указатель на константу может указывать на не константу но не наоборот? Или имеется ввиду полное совпадение cv сигнатур для P и Q выраженных как cv T? Тут если кто объяснит просто и кратко, буду признателен.
1
 Аватар для stzer
140 / 110 / 60
Регистрация: 26.10.2013
Сообщений: 314
05.01.2020, 01:45
IGPIGP, всё-таки пусть для нас эту цитату переведут.
Как понял я, самую суть:
Есть два выражения, P и Q. Если хотя бы одно из них имеет тип T *, и если этот T * - не указатель на массив, то это UB.
Один из кейсов - мы не можем взять адрес какого-то отдельного объекта, и прибавить, скажем, единицу.

Как это увязать с кодом выше - для меня загадка.

rat0r, нет, не забыл.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
05.01.2020, 01:50
Цитата Сообщение от IGPIGP Посмотреть сообщение
вы запостите сюда тот фрагмент который имеете ввиду за
Ты привёл правильный фрагмент в Восходящее преобразование массива производного класса к родительскому?
Ты не знаешь, что такое нормативный текст? Примечение (Note) это не нормативный текст. Нормативный — до Note.
Цитата Сообщение от IGPIGP Посмотреть сообщение
Это мне нужно ещё перечитать
Цитата Сообщение от IGPIGP Посмотреть сообщение
Тут если кто объяснит просто и кратко, буду признателен.
Цитата Сообщение от IGPIGP Посмотреть сообщение
я согласен с stzer
Т.е. ты ещё не разобрался, но уже согласен что цитата не имеет отношения к коду? Это что-то вроде «не читал, но осуждаю».
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.01.2020, 02:10
Цитата Сообщение от rat0r Посмотреть сообщение
Т.е. ты ещё не разобрался, но уже согласен что цитата не имеет отношения к коду? Это что-то вроде «не читал, но осуждаю».
То что я понял, говорит о том, что вы цитируете не имеющий отношение к делу текст. Я уже имею большой опыт общения с вами в том плане, что вы если что-то имеете ввиду, то это будет оценено как самое сокровенное и не в слух. Сплошная тайна и многозначность. Приведите тот текст который вы хотите считать главным доказательством. Я его там не увидел и признаю это. Так же как и признаю, тот факт, что текст писали ... Проясните смысл и я покажу как написать и по-русски и по-английски, что бы не набивать себе цену (как делают мелочные вонючие дегенераты), а так чтобы и ёжику было понятно. Так как писали когда-то учебники в стране где я родился. И писали великие учёные подчас. Корона не падала.

Добавлено через 8 минут
Цитата Сообщение от stzer Посмотреть сообщение
Есть два выражения, P и Q. Если хотя бы одно из них имеет тип T *, и если этот T * - не указатель на массив, то это UB.
Я думаю нет. P и Q.это адресные выражения которые могут указывать (содержать адрес) элемента массива. И их тип включая квалификаторы (нижнего уровня как я понял) должен быть подобен (similar to) типу элемента массива. Критерии подобия я пока не шибко разобрал из того что там показано. И вследствие, я не уверен, а участник который привёл пример наслаждается этим фактом. Может быть он и снизойдёт до объяснения. Кто знает?
Однако, того что я понял пока достаточно, чтобы видеть, что это не к случаю.
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
05.01.2020, 02:18
IGPIGP, согласно определению base* и der* не similar, а стандарт написан по принципу "я не я и хата не моя", другими словами он не запрещает(наверное) компиляторам реализовать различное представление указателей на разные типы(разный размер, выравнивание, арифметика), главное что бы правила преобразований работали.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.01.2020, 02:25
Цитата Сообщение от zayats80888 Посмотреть сообщение
IGPIGP, согласно определению base* и der* не similar
А кто спорит? Это я понял. У них тип T разный для Q и P. Если в терминах текста. Но мы же говорим о указателях на базовый класс. И не важно на что они указывают. Они есть эдементы массива. То есть T=Base*. А указатели P и Q это указатели на этот тип. Я уже не знаю как ещё попросить объяснить, что тут не similar...
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
05.01.2020, 02:38
Цитата Сообщение от rat0r Посмотреть сообщение
В данном случае поведение неопределённое.
серьёзно???

ты серьёзно не можешь предсказать что должен сделать код,
и что он сделает по факту?

серьёзно думаешь, что результат непредсказуемый???

Цитата Сообщение от rat0r Посмотреть сообщение
Ожидаемый тобой результат ≠ определённое поведение. В рамках UB возможно любое поведение, в т.ч. ожидаемое именно тобой (пусть даже не только тобой).
в рамках UB возможно любое.
но в данном случае поведение определенное.

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

и если ты читал те самые книжки на которые любишь ссылаться,
и знаешь как обязана работать адрессная арифметика указателей,
то ты должен понимать, почему мой код работает именно так, как он работает.
и должен понимать, почему он не может сработать как то иначе.

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

Цитата Сообщение от rat0r Посмотреть сообщение
Так это ты писал про некие легальные преобразования типов.
я не писал про некие легальные преобразования.
я не писал про них, потому что писал не о них.

ты как вообще, русский текст нормально воспринимаешь?

я писал про ре-интерпритацию.
конкретно: что в отличие от легальных преобразований типов,
в случае ре-интерпритации не делается никаких дополнительных вычислений.
в результате можно поиметь некорректный результат.

"ре-интерпритация" отличается от "легальных преобразований",
но из этого никак не следует, что она - нелегальная.

Цитата Сообщение от rat0r Посмотреть сообщение
Административным правонарушением является только переход на красный свет в результате которого произошла авария или просто переход на красный?
правонарушением является только и только такой эпизод,
за который к человеку была применена мера наказания.

формально, убивать людей - это нарушение закона.
но если после убийства тебя оправдали в суде,
значит формально закон ты не нарушил.


я прекрасно понимаю твою точку зрения.
и понимаю, что ты пытаешься мне сообщить.

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

но ты не можешь так сказать про совершенно конкретный случай,
который не оставляет место неопределенности.


понимаешь в чем фокус?
неопределенное поведение должны быть неопределенным.
а иначе, это уже не UB.

Цитата Сообщение от rat0r Посмотреть сообщение
Ты хотел пруф UB — ты его получил.
ага.
я же не забыл сказать тебе "спасибо" ?

Цитата Сообщение от rat0r Посмотреть сообщение
А причины по которым какую-то ситуацию обозначили как UB — это другой вопрос (и банально манёвр в сторону ).
ты в деццком садике что ли?
если тебе нужны манёвры - ты ошибся с собеседником.

на самом деле причины - это самое важное.
это - суть.
причины дают самое важное - понимание.

в нашем с тобой случае - понимание того,
почему мой код ведет себя совершенно определенным образом.
и почему он не может повести себя как то иначе.

когда ты в следующий раз захочешь прокомментировать чей-то код,
подумай о том, что на самом деле ты комментируешь:
реальный код, с его реальными проблемами (если она там вообще есть)
или гипотетические проблемы гипотетической абстрактной машины.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.01.2020, 03:42
Цитата Сообщение от zayats80888 Посмотреть сообщение
IGPIGP, согласно определению base* и der* не similar
Это бесспорно, с самого начала. Но я не разглядел вопроса. И сражался с вымышленными глупостями. Виноват.
rat0r, приношу извинения. На мой вопрос вы ответили невнятно. Ни к чему было обновлять страницу. Речь была не о array-to-pointer-decay. Я то думал что передаётся во всех случаях Base** но инициализированный разными объектами/подобъектами... Теперь ясно к чему цитата.
GoshaRubi, нет смысла в контексте полиморфного вызова в массивах из указателей на подобъекты. Именно массивы указателей на базовый класс полезны. А на этих указателях могут висеть любые типы иерархии. Тогда это имеет смысл. Иначе может помочь перегрузка, например, но о полиморфизме для Derived** перегрузки придётся забыть. А вот функция принимающая Base** сможет раскрыть возможность вызова виртуального метода.
Вот такой код возможен:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;
struct Base
{
 
    virtual void vf(){cout<<"Base\n";}
    virtual ~Base(){}
};
 
struct Derived :public Base
{
    void vf(){cout<<"Derived\n";}
    ~Derived(){};
};
 
void foo(Base** arrayPtrBase, size_t n)
{
 for(size_t i=0; i<n; ++i)arrayPtrBase[i]->vf();
}
 
void foo(Derived** arrayPtr, size_t n)
{
 for(size_t i=0; i<n; ++i)arrayPtr[i]->vf();
}
 
int main()
{
 
Base base, *pbase=&base;
Derived der1, der2, *pder1=&der1, *pder2=&der2;
Base *ar_bas[]={pbase, pbase,  pbase};
Base *ar_bas_mix[]={pbase, pder1,  pder2};
Derived *ar_der[]={pder1,  pder2, pder1,  pder2};
foo(ar_bas, sizeof(ar_bas)/sizeof(Base *));
cout<<endl;
foo(ar_bas_mix, sizeof(ar_bas_mix)/sizeof(Base *));
cout<<endl;
foo(ar_der, sizeof(ar_der)/sizeof(Derived *));
return 0;
}
1
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
05.01.2020, 03:47
Цитата Сообщение от IGPIGP Посмотреть сообщение
Теперь ясно к чему цитата.
Ок. Отвечать на всё, что выше, не нужно?
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
05.01.2020, 12:34
Цитата Сообщение от rat0r Посмотреть сообщение
Ок. Отвечать на всё, что выше, не нужно?
Нет. С формальной точки зрения конечные базовые типы denoted as U не являются the same и в итоге Base** и Derived** не являются similar...
Хотелось бы всё же понять, что подвигло комитетчиков считать что ponter to pointer to derived нельзя использовать как pointer to pointer to base в контексте как итерации по массиву так и доступа к членам суперкласса. Какие подводные камни скалистого дна С++ могут ранить на этот раз?
-Размеры указанных ponter to pointer'ов могут отличаться? Если да, - когда, где и по какой причине.
-Доступ к по указателю Base* к объекту по его адресу сохранённому в Derived* в рамках строго ограниченных возможностями Base уже не законен? Если да, - когда, где и по какой причине.
А формально, - вы правы. В стандарт записали, что это фактически запрещено в контексте как итерации по массиву так и доступа к членам суперкласса. Или по крайней мере в одной из частей данного контекста.
Но почему?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
06.01.2020, 03:36
Цитата Сообщение от IGPIGP Посмотреть сообщение
-Размеры указанных ponter to pointer'ов могут отличаться? Если да, - когда, где и по какой причине.
Даже если у base* и der* одинаковый размер, читать значение из объекта типа der* через glvalue с типом base* это банально нарушение т.н. strict aliasing rules.
2
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
06.01.2020, 03:56
Цитата Сообщение от rat0r Посмотреть сообщение
Даже если у base* и der* одинаковый размер, читать значение из объекта типа der* через glvalue с типом base* это банально нарушение т.н. strict aliasing rules.
Нужно освежить. Я думал нельзя писать в объект через указатель на другой тип. А читать... Тем более в функции которая знать не знает о том что ей дали не оригинальный указатель... Что тут может быть ужасного?
Указатель базового может быть использован для доступа к производному. Тут нет нарушения. А указатель на указатель к базовому нельзя использовать как указатель на указатель к производному(!).
Вообще, если говорить о нормативной документации, правовой, технической и в частности - стандартах то читая то что называют стандартами в ПО приходится сдерживать ненормативную лексику. В частности в данном случае сказано о том что типы "подобны/similar" если совпадают cv сигнатуры и базовые типы (U), Но это же очевидно. То есть если это один и тот же тип то это нечто подобное (самому себе). То есть, данное условие - тавтология. И может быть принято как достаточное условие в качестве отправной точки (неуклюжий вариант). А далее можно формулировать случаи когда возможны отличия при сохранении подобия (similarity). Что там далее и делается. Возможно поленились учесть случай для указателей на классы иерархии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2020, 03:56
Помогаю со студенческими работами здесь

Передача массива в конструктор производного класса
Народ, задача такая: Создать абстрактный класс с виртуальной функцией – норма. Создать производные классы : комплексные ...

Восходящее и нисходящее преобразование (Upcasting and Downcasting)
Посоветуйте литературу по данному вопросу в разрезе С++ ну или простыми словами что это, для чего нужно заранее спасибо

Неявное восходящее преобразование при защищенном/закрытом наследовании
Здравствуйте. Читаю книгу Стивена Прата по C++. Попался непонятный момент: в одной таблице (в таблице 14.1 в 6-й рус. редакции на стр....

Как сложить объект базового класса с объектом производного(наследуемого класса)
Как умножить объект базового класса с объектом производного(наследуемого класса): ozenka - объект базового класса, а ves- производного ...

Почему объект производного класса не видит префиксный оператор из базового класса?
Короче создал я базовый класс с перегруженным префиксным оператором ++. Потом чтоб его затюнинговать, сделал ему производный класс с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru