Отговори на тема  [ 11 мнения ] 
Ц++ САМО един клас 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Ц++ САМО един клас
как са прави тва по "най-хитрия" начин?

_________________
main[-1u]={1};


Пет Авг 13, 2021 1:43 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение Re: Ц++ САМО един клас
Не става ясно за какво питаш. За единствена инстанция (singleton) на клас или?


Пет Авг 13, 2021 1:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Ц++ САМО един клас
да де :) ... ембеддед

_________________
main[-1u]={1};


Пет Авг 13, 2021 3:56 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Юли 11, 2007 10:16 am
Мнения: 1730
Мнение Re: Ц++ САМО един клас
Private constructor, публичен статичен метод за инстанциране, например getInstance(), който създава инстанция на класа в статична член променлива и я върща. Не създава инстанция ако вече променливата не е NULL.


Пет Авг 13, 2021 4:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Ц++ САМО един клас
знам че така ще кажете "... публичен статичен метод за инстанциране ..." :)

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

мерсаж

_________________
main[-1u]={1};


Пет Авг 13, 2021 7:00 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 1:59 pm
Мнения: 3867
Местоположение: Габрово
Мнение Re: Ц++ САМО един клас
Не става - не можеш да викаш директно метод от обект като колбек, в смисъл да вземеш функционален пойнтър към метода и да жулиш.
https://blog.mbedded.ninja/programming/languages/c-plus-plus/callbacks/


Пет Авг 13, 2021 9:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение 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.

_________________
https://github.com/slav4ocom/


Последна промяна slav4o.com на Пет Авг 13, 2021 11:56 pm, променена общо 1 път



Пет Авг 13, 2021 11:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Ц++ САМО един клас
нещо като [6] се опитах да направя...
накрая като го видях - го изтрих :)
за Ардуино библиотека ми се строи твърде сложно, по-точно - разхищение на ресурс

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

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

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

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

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

_________________
main[-1u]={1};


Пет Авг 13, 2021 11:24 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: Ц++ САМО един клас
Не може ли да се напише един междинен CPP клас със статичен метод Run():

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

_________________
https://github.com/slav4ocom/


Съб Авг 14, 2021 12:40 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Ц++ САМО един клас
сигур може, но май пак ще стане нещо от "списъка" на Гичо
зора в тази гимнастика е да предам параметрите от колбака на класс библиотеката

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

_________________
main[-1u]={1};


Съб Авг 14, 2021 8:21 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 27, 2005 12:48 pm
Мнения: 6094
Мнение Re: Ц++ САМО един клас
мии - пренаписах го на СРР ... пърфект :)
тряя само да го блокирам класа ... singleton

_________________
main[-1u]={1};


Съб Авг 14, 2021 12:07 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 11 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни