Специальная структура: группировка (указатели на функции и группировки указателей на функции)

Мне нужно объявить «вещь», которая будет содержать список указателей на функции, и мне нужно будет обращаться к ним обоими способами:

  • Непосредственно призываю к function.myStructVar.attr1

  • Перебирая их как бы vector.myStructVar.vec[1]

Поэтому я подумал: «struct + union — это мое решение». Я объявлю struct со всеми необходимыми мне переменными, а затем объединение со структурой и вектором указателей для работы.

Но все стало сложнее. Теперь вместо указателей на функции я хочу смешивать указатели на функции с контейнерами указателей на функции. (Я знаю, это странно, и мне не очень понятно: S)

Возобновление: Я хочу иметь группировку (указатели для работы и группировки указателей для работы). И я хочу иметь возможность получить к ним доступ таким образом, чтобы мне не нужно было знать, как они структурированы.

Является ли это возможным? как?

Конечная цель:
Я хотел бы иметь такие объекты, как:

Objecta:

-Eat Apple
-Eat Bannana
--DoDigestion(this is a:
-->DigestApple
-->DigestBannana
-->AddAcid
)

ObjectB:

-Eat Potato
-Eat Bannana
--DoDigestion(this is a:
-->DigestBannana
-->AddWater
)

В конце, идея состоит в том, чтобы определить какую-то спецификацию того, что будет сделано, и отправить ее в функцию, которая будет делать:

Исполнитель:

    void execute(Object):
foreach(Action a in Object) do(a);
foreach(GroupOfAction g in Object) execute(g);

0

Решение

Простое решение состоит в том, чтобы превратить ваш GroupOfAction в Action сам. Затем дайте «вещь», которую вы ищете GroupOfAction, который теперь может содержать подгруппы.

C ++ 11 уже имеет «Action» учебный класс, std::function<void(void)>, Так:

typedef std::function<void(void)> Action;
typedef std::list<Action> GroupOfAction;
Action Group(GroupOfAction const& list)
{
return [list](){ for (Action& a : list) { a(); } }
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]