c++ - 我可以在 C++ 中有“类型类型”吗?
问题描述
我对 C++ 很陌生,但在锁定期间我一直在尝试使我的技能组合多样化。我正在尝试使用 SFML 编写基于节点的声音处理工具。我想要一个结构来包含我所有节点的输入和输出。但是,我显然无法将任何类型连接在一起。我正在寻找类似于 Blender 对其节点类型所做的事情。以下屏幕录像显示了我的意思:绿色输出类型与其他输入类型不兼容。
我认为 astruct NodeInOut
可能是解决这个问题的一个有用的解决方案:每当我创建一个新节点时,我都会分配一个类型,并且在将节点连接在一起的逻辑中,我确保不兼容的类型是不可连接的。但是,每当我创建一个新的 Node 定义时,我都需要传入一个类型。
我对 Node 类的想法是,它的结构有点像这个匆忙制作的图表。
有没有人知道如何做到这一点,或者如何以不同的方式构造它以使这不是问题?
除了 SFML 样板文件之外,我还没有编写任何代码。
解决方案
是的,您可以拥有“类型的类型”。
但是,请注意用户在运行时连接节点。因此,这是一个运行时问题,而不是您可以在编译时解决的问题。
换句话说,只需使用包含节点接受/发送的任何类型的运行时值,并根据需要进行比较。
推荐阅读
- javascript - 有时数据不会通过角度 8 中的数组推送填充到视图 (ngFor) 中
- python - Python仅在循环中绘制最后一条曲线
- mysql - 如何在 mysql 中旋转 mysql 中的上一个日期
- powershell - 如何使用 Powershell 重命名包含空格字符的文件扩展名
- java - 如何动态转换 Java 对象
- python - 神经网络:为什么我的代码不可重现?
- android - 具有 marquee_forever 属性的 TextView,不要在新元素上水平移动
- javascript - 将 Nestjs 与 Cognito 集成
- flutter - downloads_path_provider — 操作系统错误:权限被拒绝,errno = 13
- android - 将 jetpack compose 添加到现有项目