LOKI C ++:'ScatterHierarchyTag'如何解决继承模糊性?

问题描述 投票:4回答:1

我正在阅读Alexandrescu的现代C ++设计的第3章。]它解释了HierarchyGenerators.h的实现,但是此后对该库进行了更改。

[我无法理解ScatterHierarchyTag如何解决解析Field函数时的歧义(该函数允许我们访问由特定Base<type>定义的成员,例如Field<int>(Object)将使我们获得&Base<int>到[ C0]),当用于生成层次结构的类型列表重复时。 (例如:Object)我看到它在根GenScatterHierarchy<TYPELIST_4(int,int,string,Widget), Base> Object类之前的每个分支中添加了一个唯一的“类型/标签”,但仍然存在歧义吗?

谢谢你。

编辑:

该图显示了类型列表中重复类型的多重继承问题。GSH = GenScatterdHierarchy

Base<type>

我相信,对于与enter image description here的两个连接中的每个连接,唯一标记都是分别插入的(用蓝线标记)(对于根的其他基类也是如此)

此外,我插入图片是为了使所有人都更容易理解。让我知道它是否不适合stackoverflow的准则,我将其删除。

我正在学习Alexandrescu的Modern C ++ Design的第3章。它解释了HierarchyGenerators.h的实现,但是此后对该库进行了更改。我无法...

c++ loki
1个回答
0
投票

Base<int>不能消除歧义。它的作用是使模棱两可的基类可访问。

© www.soinside.com 2019 - 2024. All rights reserved.