我遇到了需要定义“需求”类型的情况,其中每种类型的需求都必须携带不同的数据。像:
Requirement1:
Requirement2:
...
这与用户事件面临的问题基本相同。这些通常使用一个联合来实现,该联合封装了所需的所有可能数据,并使用单个变量来确定类型。 SDL和SFML都是这方面的例子,这就是我目前实施这些要求的方式。
尽管这种方法运行正常,但我不禁想到在现代C ++环境中它似乎有些不雅。首先,它删除了默认的构造函数和复制/移动机制,迫使我重新定义所有这些。另一件事(尽管在实践中不是问题)是每个实例都占用尽可能多的内存。我不知道,也许我很傻,但我只是觉得可能有一个更优雅的解决方案。
那么,你们是否知道使用最新的C ++技巧是否有更好的解决方案?预C ++ 11兼容性没有问题。