Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Ц++ САМО един клас
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=17965
Страница 1 от 1

Автор:  TheWizard [ Пет Авг 13, 2021 1:43 pm ]
Заглавие:  Ц++ САМО един клас

как са прави тва по "най-хитрия" начин?

Автор:  michev [ Пет Авг 13, 2021 1:55 pm ]
Заглавие:  Re: Ц++ САМО един клас

Не става ясно за какво питаш. За единствена инстанция (singleton) на клас или?

Автор:  TheWizard [ Пет Авг 13, 2021 3:56 pm ]
Заглавие:  Re: Ц++ САМО един клас

да де :) ... ембеддед

Автор:  michev [ Пет Авг 13, 2021 4:02 pm ]
Заглавие:  Re: Ц++ САМО един клас

Private constructor, публичен статичен метод за инстанциране, например getInstance(), който създава инстанция на класа в статична член променлива и я върща. Не създава инстанция ако вече променливата не е NULL.

Автор:  TheWizard [ Пет Авг 13, 2021 7:00 pm ]
Заглавие:  Re: Ц++ САМО един клас

знам че така ще кажете "... публичен статичен метод за инстанциране ..." :)

всъщност проблема ми е С колбак вика СРР... за ся getInstance() нящо не ме кефи
ма кат имам време ще си пренапиша С драйвера дирек на СРР

мерсаж

Автор:  gicho [ Пет Авг 13, 2021 9:56 pm ]
Заглавие:  Re: Ц++ САМО един клас

Не става - не можеш да викаш директно метод от обект като колбек, в смисъл да вземеш функционален пойнтър към метода и да жулиш.
https://blog.mbedded.ninja/programming/languages/c-plus-plus/callbacks/

Автор:  slav4o.com [ Пет Авг 13, 2021 11:14 pm ]
Заглавие:  Re: Ц++ САМО един клас

Интересно. Не е ли логично всяка инстанция на класа (обект) да си пази нейно копие в паметта на програмния код на метода, модифицирано да работи точно с неговите данни ? Демек вземаш указател от конкретната инстанция на метода в паметта и стартираш този конкретен блок от код ?
Или това не е имплементирано така заради икономия на памет ?

edit: сам си намерих отговора
stack overflow.com написа:
No, methods aren't stored in objects. There's always a single "instance" of each method in memory, and it isn't copied when you create objects. Under the hood, methods work like regular (free) functions, but with an implicit this parameter.

Автор:  TheWizard [ Пет Авг 13, 2021 11:24 pm ]
Заглавие:  Re: Ц++ САМО един клас

нещо като [6] се опитах да направя...
накрая като го видях - го изтрих :)
за Ардуино библиотека ми се строи твърде сложно, по-точно - разхищение на ресурс

всъщност OpenThread работи като 6
class Instance{
съдържа всички СРР клас "драйвери" като "променливи"
}

а драйверите са на С с предаване на статична инстанция

extern "C" void c_callback(Instance * h){
Instance::Get<class_type>().cpp_callback() .... нящо такова и тва Instance * h се подвизава във всички С драйвери ... имитира *this
}

но самия модел си е за OpenThread
те има много драйвери, аз имам само един

ще пренапиша драйвера на СРР га имам време

Автор:  slav4o.com [ Съб Авг 14, 2021 12:40 am ]
Заглавие:  Re: Ц++ САМО един клас

Не може ли да се напише един междинен CPP клас със статичен метод Run():

като callback да се подава Run(), а вътре в Run-a да се вика по стандартно му инстанционния метод ?

Автор:  TheWizard [ Съб Авг 14, 2021 8:21 am ]
Заглавие:  Re: Ц++ САМО един клас

сигур може, но май пак ще стане нещо от "списъка" на Гичо
зора в тази гимнастика е да предам параметрите от колбака на класс библиотеката

тва е радио С драйвер с RX/TX колбаци ( супер луп, няма ISR )
a параметрите са дейта и грешки
драйвера го "откраднах" от OpenThread - щото не го разбирах...
и го правя на Ардуино библиотека

Автор:  TheWizard [ Съб Авг 14, 2021 12:07 pm ]
Заглавие:  Re: Ц++ САМО един клас

мии - пренаписах го на СРР ... пърфект :)
тряя само да го блокирам класа ... singleton

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/