你会如何从结构中随机选择路径?

时间:2012-02-18 00:59:50

标签: c++ random struct

我想要做的是随机选择结构的成员。我会创建一个结构的实例然后它将通过它的成员的“路径”并到达最后一个成员。我将使用它作为随机项目生成器。所以它会创建这样的东西:

item new_item;

然后它将随机选择它拥有的成员。

new_item.item_class.part1.part2.end

请记住,项目的各个部分将被随机选择。我不知道如何实现这一点,我到处寻找起点。

2 个答案:

答案 0 :(得分:1)

这在C ++中是不可能的,除非你手动编写结构的描述和跟随它们的函数。

换句话说,如果您自己手动实现,则只能获得此功能。 C ++运行时不会保留所需的信息。

编辑:有些库可以通过模板和宏帮助在C ++中为反射机制创建代码。尝试使用Google搜索“C ++中的反射”。

答案 1 :(得分:1)

这没有意义。 C ++是一种静态类型语言,因此您必须在编译时确定要使用哪些类型。你不能在C ++中选择“随机类型”,因此你不能引用“随机类成员”。

请注意,基类指针的集合确实是一个可用于处理异构对象集的同类集合,但它们必须都来自相同的类型。访问者(使用动态强制转换)可用于处理实际的具体实例。也许这可能是一种有用的方法,所以让我写一个例子:

vector