Еще ни разу не сталкивался с публичными проектами, где применение С++ было бы действительно необходимым, если исключать какие-то внутренние предпосылки программистов личностного характера. Си более чем достаточно.
По-моему, вы маетесь ерундой, стараясь решать простые задачи сложными методами.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Дело в том что задач создания библиотек с нужным мне в работе функционалом далось решить давно, хотелось бы улучшить. Не так давно сделал вариант с вложенными объектами не через внешний define а через вариативный макрос в самом теле класса. Типа objcts( A a, B b) и тд сколько надо, а он находит всё нужное для включения в цепочку вызова этих объектов. И так не тратиться озу на таблицы и списки между прочим и можно в одной цепочке вызова например вызвать у всех зарегистрированных в ней объектов разных классов методы с одинаковым названием и параметрами.
Про наследование то же не говорить, пробовал, тоже есть траты озу.
Попробую попозже с другого пк скинуть пример, код который что то выдаёт и размер оперативки с полученными командами асма, увидите о чём речь.
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
[uquote="mazda",url="/forum/viewtopic.php?p=3228073#p3228073"]есть вопрос по объектам как их вызывать одного типа как бдто бы они в цепочке но что бы не в цепочке тоесть может их стоит как то хитро разместить на памяти в озу но тогда подскажжите пожлйста как это сделать[/uquote]
Зашел тут в вашу веточку. У меня есть решение - я в обьекте размещаю указатель на обьект того же типа. Во время начальной инициализации я по всех своих обьектах создаю связи через эти указатели. Можно строить деревья, можно кольца. Например есть у нас обьект - страница меню. И есть кнопки вверх, вниз, вправо, влево... я в обьекте имею 4 указателя на другие страницы. В конструкторе пишем такое: nextPagePtr = this; Если нужен переход то при начальной инициализации в указатели прописываем другие страницы.
Если создать кольцо, то можно в простой процедурке допустим опрашивать разные spi слейвы не заморачиваясь с массивами и проверками на конец массива типа if(i > x) i = 0;
Это решение давно уже всем известно и используется в односвязных (и не только) списках. Без них списки, в принципе, не возможны.
Достаточно просто погуглить.
[uquote="Аlex",url="/forum/viewtopic.php?p=3232536#p3232536"]Это решение давно уже всем известно и используется в односвязных (и не только) списках. Без них списки, в принципе, не возможны.
Достаточно просто погуглить.[/uquote]
Да я и не претендую на открытие Америки. Но как я понял, у топик стартера и объекты не одинаковые. Надо описывать преобразование типов... фигня всё это. Я вот своих при любом удобном случае пилю слезать с АВРок на СТМки. Я как программист готов. Только платы переделать. Как только будем новый прибор делать так ультиматум поставлю))) Меня уже достало 2-4к оперативки за неадекватные деньги.
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3232513#p3232513"][uquote="mazda",url="/forum/viewtopic.php?p=3228073#p3228073"]есть вопрос по объектам как их вызывать одного типа как бдто бы они в цепочке но что бы не в цепочке тоесть может их стоит как то хитро разместить на памяти в озу но тогда подскажжите пожлйста как это сделать[/uquote]
Зашел тут в вашу веточку. У меня есть решение - я в обьекте размещаю указатель на обьект того же типа. Во время начальной инициализации я по всех своих обьектах создаю связи через эти указатели. Можно строить деревья, можно кольца. Например есть у нас обьект - страница меню. И есть кнопки вверх, вниз, вправо, влево... я в обьекте имею 4 указателя на другие страницы. В конструкторе пишем такое: nextPagePtr = this; Если нужен переход то при начальной инициализации в указатели прописываем другие страницы.
Если создать кольцо, то можно в простой процедурке допустим опрашивать разные spi слейвы не заморачиваясь с массивами и проверками на конец массива типа if(i > x) i = 0;[/uquote]
спасибо за совет, я так делал, сделал как вложенный объект и ставил в любые классы но памяти тратиться больше чем если через макросы делать, так что от этого варианта я отказался
и делал в двх вариантах, один для объектов одного класса и там только указатель, и вариант для цепей объектов разных классов, там ещё хранился адрес функции которая была для каждого класса своя, статическая, принимала адрес объекта, преобразовывала в адрес объекта своего класса и в нём вызывала интерфейсный метод, работает хорохо но память тратит ещё больше
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
[uquote="mazda",url="/forum/viewtopic.php?p=3232559#p3232559"]сделал как вложенный объект[/uquote]
ну вложенные объекты это не совсем то что я делал. Вы создавали в классе 1 переменные типа класс 2. Я в классе 1 создавал указатель на объект класса 1. У меня оперативка расходовалась на указатель - 1 указатель = +2 байта оперативки. Ну в общем ситуация такова, что если хотим упростить себе работу, то теряем оперативку. Если оперативки мало, то тогда приходится ручками больше писать - тогда уже флеш расходуется. Обычно оперативки у меня 2-4кб, а флеша 32-64кб. Вот и ищу золотую середину.
[uquote="mazda",url="/forum/viewtopic.php?p=3232559#p3232559"]спасибо за совет, я так делал, сделал как вложенный объект и ставил в любые классы но памяти тратиться больше чем если через макросы[/uquote]
Если занудствовать, то буквально следуя общепринятой терминологии, "вложенный" объект целиком помещается в объекте, который его включает. Что, согласитесь, слабо напоминает подразумеваемые выше связные списки. Как-то у нас не получается даже сформулировать задачу под которую вы хотите свой код плюсами отрефакторить. Тёмный лес и только волки по кустам с непонятными намерениями шебуршатъ ... Озвучьте "ТЗ" хотя-бы.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR!
а никто не говорит что у этого дела есть какая-то конкретная цель. Необходимость цели это миф, художественная выдумка если хотите, главное делать, делать много и по крупному, на плюсах.
Добавлено after 19 minutes 54 seconds:
[uquote="ARV",url="/forum/viewtopic.php?p=3228875#p3228875"]Еще ни разу не сталкивался с публичными проектами, где применение С++ было бы действительно ... ерундой, стараясь решать простые задачи сложными методами.[/uquote] Лучше и не скажешь.
У меня промышленная техника с прошивками на си++ на аврках, с военной приёмкой, тоесть по вашей логике, даже если я неправильно выбрал язык кто нибудь потом посмотрит и скажет "я видел какие то там аппараты с прошивками на си++, с военной приёмкой и чем то ещё значит так нужно", но это же не так.
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
[uquote="mazda",url="/forum/viewtopic.php?p=3232859#p3232859"]художественная выдумка если хотите, главное делать, делать много и по крупному, на плюсах.[/uquote]
не, выдумку не хотим, знаний хотим, мето́ду хотим с "маркосами" по "вложенным" "объектам" посмотреть-пообсуждать, что рвёт связаные списки как ворона попугая. А по-крупному мы и сами умеем, на 4 гигах-то много ума не надоть.
[заманушливо так] На шаблоны, кстати, не смотрели со своим AVR-ом?
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR!
шаблоны макросами и создаю, на днях постараюсь показать
Добавлено after 3 minutes 37 seconds:
[uquote="Siarzhuk",url="/forum/viewtopic.php?p=3233028#p3233028"]... на 4 гигах-то много ума не надоть...[/uquote]
зачем же вы так передёргиваете и искажаете смысл сказанного мной выше, для разных задач разное железо, и на своём уровне в каждой области можно подойти с умом к решению самых любых задач.
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
[uquote="mazda",url="/forum/viewtopic.php?p=3233302#p3233302"]шаблоны макросами и создаю, на днях постараюсь показать[/uquote]
Я имел ввиду шаблоны не те, которые #define, а те, что template<typename ... >. Последние, кроме как размягчать и клинить [в частности мои] мозги при попытке их осмысления иногда "таки, да" могут приходиться весьма кстати.
[uquote="mazda",url="/forum/viewtopic.php?p=3233302#p3233302"]зачем же вы так передёргиваете и искажаете смысл сказанного мной выше, для разных задач разное железо[/uquote]
Прошу простить великодушно, сентенция самоиронизировала над моими замечаниями про взгляд на мир человека с навесным SDRAM-ом, кой существенно отличается от взгляда располагающего штатными сиротскими килобайтами на всё про всё. И никак не с целью "победить" вас любой ценой.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR!
[uquote="Siarzhuk",url="/forum/viewtopic.php?p=3233787#p3233787"]Я имел ввиду шаблоны не те, которые #define, а те, что template<typename ... >. Последние, кроме как размягчать и клинить [в частности мои] мозги при попытке их осмысления иногда "таки, да" могут приходиться весьма кстати.[/uquote]
#define - макрос
template - шаблон
именно это я и имел ввиду
[uquote="Siarzhuk",url="/forum/viewtopic.php?p=3233787#p3233787"]Прошу простить великодушно, сентенция самоиронизировала над моими замечаниями про взгляд на мир человека с навесным SDRAM-ом, кой существенно отличается от взгляда располагающего штатными сиротскими килобайтами на всё про всё. И никак не с целью "победить" вас любой ценой.[/uquote]
"человек с навесным SDRAM-ом", где он нависает у него? )
Не понял про "победить", я и под ПК с виндой пишу. Как правило в моих проектах есть "верх" и "низ", тоесть ПК и куча мк
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
Лучше объясните - на кой чёрт этот замороч с плюсами: классы, наследники, инкапсуляция методов, полиморфизм и прочий бред? Почему нельзя написать просто на си?
Вышел из себя.
Пришел в себя.
Ушел в себя.
И решил больше сегодня никуда не ходить
[uquote="CyberVad",url="/forum/viewtopic.php?p=3233946#p3233946"]Лучше объясните - на кой чёрт этот замороч с плюсами: классы, наследники, инкапсуляция методов, полиморфизм и прочий бред? Почему нельзя написать просто на си?[/uquote]
Очевидно же, плюсы просто лучше. Даже если на них писать практически как на С, все равно добавляется множество мелких улучшений.
[uquote="Reflector",url="/forum/viewtopic.php?p=3233964#p3233964"]Очевидно же, плюсы просто лучше. Даже если на них писать практически как на С, все равно добавляется множество мелких улучшений.[/uquote]
if(_tst_flag(qprog_abel_status))
{
relay_led(_write,_H);
if(_tst_flag(qshutdown_request))
{
switch(qsvar)
{
case 0:{qtimer.time=t1.eep();shutdown_t1_prog();qsvar=1;break;}
case 1:{qtimer.time=t2.eep();shutdown_t2_prog();qsvar=2;break;}
case 2:{qtimer.time=t3.eep();shutdown_t3_prog();qsvar=3;break;}
case 3:{qtimer.time=t4.eep();shutdown_t4_prog();qsvar=4;break;}
case 4:{qtimer.time=t5.eep();shutdown_t5_prog();qsvar=5;break;}
case 5:{_set_flag(qshutdown_ready);break;}
}
}
else
{
switch(qvar)
{
case 0:{qtimer.time=t1.eep();work_t1_prog();qvar=1;break;}
case 1:{qtimer.time=t2.eep();work_t2_prog();qvar=2;break;}
case 2:{qtimer.time=t3.eep();work_t3_prog();qvar=3;break;}
case 3:{qtimer.time=t4.eep();work_t4_prog();qvar=4;break;}
case 4:{qtimer.time=t1.eep();work_t1_prog();qvar=1;break;}
}
}
}
else
{
qtimer.time=5; relay_led(_write,_L); q_disable_prog(); if(_tst_flag(qshutdown_request))_set_flag(qshutdown_ready);
}
}
return;
};
unsigned char v_cap_charging_pause=0;
void ir(signed long int pos){motor.ir(pos);return;}
void ir_(signed long int pos){return;}
int main(void)
{
cli();
//interrupt0disable();//не использовать с pos_encoder.scan();
//interrupt1disable();//не использовать с pos_encoder.scan();
#ifndef __z_axis
if( !_adc_pos )pos_encoder.ir=ir; else pos_encoder.ir=ir_;
#endif
DDRB|=2;
adc_calibration_state=1;
if( _adc_pos ) adc_pos_in.enable();
inition;
bus.set_address(_address);
sei();
while(1)
{
system;
}
}
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
[uquote="mazda",url="/forum/viewtopic.php?p=3233966#p3233966"]сишники не прочтут[/uquote]
Если рекламируешь язык, нужно было подобрать маленький, но емкий пример, чтобы сишники прочли и подумали, что тоже так хотят, даже если не до конца понимают что там происходит
[uquote="Reflector",url="/forum/viewtopic.php?p=3233976#p3233976"]Если рекламируешь язык[/uquote]
Не рекламирую.
[uquote="Reflector",url="/forum/viewtopic.php?p=3233976#p3233976"]нужно было подобрать маленький, но емкий пример[/uquote]
Первый пример, другие скинуть не могу ввиду их актуальности в работе, аписать специально пример нет времени, но постараюсь.
[uquote="Reflector",url="/forum/viewtopic.php?p=3233976#p3233976"]чтобы сишники прочли и подумали, что тоже так хотят[/uquote]
Не захотят, кто захотел давно изучили и используют.
Про "сишники не поймут", это же просто подколка такая, хотя вы всё равно не поймёте.
Думаю читать никто и не станет, сделают как всегда, не прочтут не разберутся а просто напишут "всё нет, под мк правильно писать на си и всё тут", это уже дело пройденное.
Добавлено after 35 minutes 39 seconds:
Ivanoff-iv не поймёт пятую строку в третьем примере
я его в гугл на дрц прогнал, вы знаете, пи-када нет.
[Надеясь, что ДЦМотор2 и ДЦМотор3 реальные шаблоны а не выхлоп препроцессора] Шаблоны ДЦМотор2 и ДЦМотор3 настолько абсолютно разные, что 2 и 3 не могли стать 78-ым параметром, позволив частично специализировать реально отличающийся функционал? Хотя, конечно, при списочном составе параметров количеством в пол-роты о специализации страшно и помышлять. Каждый из 77-и реально настолько вариативен, что заслужил честь быть в этом списке?
Шаблоны С++ они ведь как дети - как маленькие так классные и прикольные, но имеют тенденцию быстро расти, а уж как подрастают - превращаются в несносных, неуправляемых негодяев.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR!