реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Перебрать все члены структуры
zltigo
сообщение May 25 2015, 22:00
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Jenya7 @ May 25 2015, 17:54) *
да я уже написал что хочу сделать.

Это не ЧТО, это КАК. Настоятельно рекомендую понять, что такое union.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 26 2015, 05:20
Сообщение #17


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



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

Сообщение отредактировал Herz - May 26 2015, 18:35
Причина редактирования: Грубость
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 26 2015, 07:53
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Jenya7 @ May 26 2015, 11:20) *
я заметил одну интересную особенность. если ответ на пост начинается с конструктивного примера/объяснения то все идет нормально. но если ответ начинается с умничания то все хана - слетаются умники и начинают соревноваться между собой.

Вы путаете причину со следствием. Если вопрос осмысленный и корректный, то и ответы на него такие-же (и первый и последующие).
На глупый вопрос можно отвечать или так-же глупо или никак.

PS: И чем Вас мой совет про указатели на члены структуры не устраивает?????
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 26 2015, 10:16
Сообщение #19


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(jcxz @ May 26 2015, 10:53) *
И чем Вас мой совет про указатели на члены структуры не устраивает?????

А чего именно указатели а не смещения offsetof() ?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 26 2015, 10:24
Сообщение #20


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(jcxz @ May 26 2015, 12:53) *
Вы путаете причину со следствием. Если вопрос осмысленный и корректный, то и ответы на него такие-же (и первый и последующие).
На глупый вопрос можно отвечать или так-же глупо или никак.

PS: И чем Вас мой совет про указатели на члены структуры не устраивает?????

совет хороший но как его применить. у каждой команды есть своя функция и соответственно свой указатель. я ищу генерик метод подставить указатель по условию. я могу тупо перебрать их все но хочется как то красиво.
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение May 26 2015, 11:18
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(Jenya7 @ May 26 2015, 11:24) *
совет хороший но как его применить. у каждой команды есть своя функция и соответственно свой указатель. я ищу генерик метод подставить указатель по условию. я могу тупо перебрать их все но хочется как то красиво.


"Сделайте мне красиво" sm.gif
Вот вам в качестве примера кривая реализация функторов на сях. Может подвигнет к размышлениям (а может к очередной порции страданий, что опять все плохо...).

CODE
//-- pointer to function that performs concrete command processing

struct TCommandFunctor;
typedef int (*PF_CmdProcessor) (const TCommandFunctor* apFunctor);


//-- command functor. encapsulated parameters and a pointer to processing function
struct TCommandFunctor
{
uint32 arg1;
uint32 arg2;
uint8 arg3;
uint16 arg4;

PF_CmdProcessor pCmdProcessor;
};


int DoCallFunctor(const TCommandFunctor* apFunctor)
{
return apFunctor->pCmdProcessor(apFunctor);
}

//-- define command processor functions

int ProcessCmd1(const TCommandFunctor* apFunctor)
{
uint32 res1 = apFunctor->arg1 + apFunctor->arg2;
return (res1 > 733);
}

int ProcessCmd2(const TCommandFunctor* apFunctor)
{
//-- do something else
uint32 res1 = apFunctor->arg3 > apFunctor->arg1;
return res1;
}

//-- define and populate functors
TCommandFunctor cmdFunctors[2] =
{
{1, 2, 3, 4, ProcessCmd1},
{11,22,23,24, ProcessCmd2}
};

void DoWhatever()
{
for(int i=0; i<2; ++i)
{
DoCallFunctor(&cmdFunctors[i]);
}

}


Сообщение отредактировал CrimsonPig - May 26 2015, 11:48
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 26 2015, 13:43
Сообщение #22


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(CrimsonPig @ May 26 2015, 16:18) *
"Сделайте мне красиво" sm.gif
Вот вам в качестве примера кривая реализация функторов на сях. Может подвигнет к размышлениям (а может к очередной порции страданий, что опять все плохо...).

CODE
//-- pointer to function that performs concrete command processing

struct TCommandFunctor;
typedef int (*PF_CmdProcessor) (const TCommandFunctor* apFunctor);


//-- command functor. encapsulated parameters and a pointer to processing function
struct TCommandFunctor
{
uint32 arg1;
uint32 arg2;
uint8 arg3;
uint16 arg4;

PF_CmdProcessor pCmdProcessor;
};


int DoCallFunctor(const TCommandFunctor* apFunctor)
{
return apFunctor->pCmdProcessor(apFunctor);
}

//-- define command processor functions

int ProcessCmd1(const TCommandFunctor* apFunctor)
{
uint32 res1 = apFunctor->arg1 + apFunctor->arg2;
return (res1 > 733);
}

int ProcessCmd2(const TCommandFunctor* apFunctor)
{
//-- do something else
uint32 res1 = apFunctor->arg3 > apFunctor->arg1;
return res1;
}

//-- define and populate functors
TCommandFunctor cmdFunctors[2] =
{
{1, 2, 3, 4, ProcessCmd1},
{11,22,23,24, ProcessCmd2}
};

void DoWhatever()
{
for(int i=0; i<2; ++i)
{
DoCallFunctor(&cmdFunctors[i]);
}

}

спасибо. попробую разобраться.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 26 2015, 16:27
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(_Pasha @ May 26 2015, 16:16) *
А чего именно указатели а не смещения offsetof() ?

Без разницы, можно и это. Только вряд-ли это поможет пациенту. Он упорно не хочет открывать учебник....
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Jun 3 2015, 05:47
Сообщение #24


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Если хочется перебирать единообразно все злементы структуры... замените структуру на массив и перебирайте сколько душе угодно.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 15:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016