特殊结构:分组(指向函数的指针和指向函数的指针分组)

Special Struct: grouping of (pointers to function and groupings of pointers to function)

本文关键字:函数 指针 结构 分组      更新时间:2023-10-16

我需要声明一个"事物",其中包含指向函数的指针列表,我需要以两种方式访问它们:

  • 直接拨打function.myStructVar.attr1

  • vector.myStructVar.vec[1]一样循环穿过它们

因此,我想:"结构 + 联合是我的解决方案",我将声明一个带有我想要的变量的结构,然后声明一个带有结构和函数指针向量的联合。

但事情变得更加复杂。现在,我想将指向函数的指针与指向函数的指针容器混合在一起,而不是只有指向函数的指针。(我知道,这很奇怪,我不太清楚:S)

恢复:我想要一个分组(指向功能的指针和指向功能的指针分组)。我希望能够以不需要知道它们结构的方式访问它们。

可能吗?怎么可能?

最终目标: 我想要这样的对象:

对象一:

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

对象 B:

-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);

简单的解决方案是将您的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(); } }
}