首页 > 解决方案 > 我可以在 C++ 中有“类型类型”吗?

问题描述

我对 C++ 很陌生,但在锁定期间我一直在尝试使我的技能组合多样化。我正在尝试使用 SFML 编写基于节点的声音处理工具。我想要一个结构来包含我所有节点的输入和输出。但是,我显然无法将任何类型连接在一起。我正在寻找类似于 Blender 对其节点类型所做的事情。以下屏幕录像显示了我的意思:绿色输出类型与其他输入类型不兼容。 这段录屏

我认为 astruct NodeInOut可能是解决这个问题的一个有用的解决方案:每当我创建一个新节点时,我都会分配一个类型,并且在将节点连接在一起的逻辑中,我确保不兼容的类型是不可连接的。但是,每当我创建一个新的 Node 定义时,我都需要传入一个类型。

我对 Node 类的想法是,它的结构有点像这个匆忙制作的图表。

这个匆忙制作的图表

有没有人知道如何做到这一点,或者如何以不同的方式构造它以使这不是问题?

除了 SFML 样板文件之外,我还没有编写任何代码。

标签: c++sfml

解决方案


是的,您可以拥有“类型的类型”。

但是,请注意用户在运行时连接节点。因此,这是一个运行时问题,而不是您可以在编译时解决的问题。

换句话说,只需使用包含节点接受/发送的任何类型的运行时值,并根据需要进行比较。


推荐阅读