是否有像 boost::ant 或 boost::variant 这样的变体的任何实现,但具有抽象接口(interface)?
我想要的是在松散耦合的应用程序中的 DLL 之间传递变体。因此,如果一个 DLL 开始在变体中存储新内容,我想避免更改所有其他 DLL 的代码。所有的 DLL 都是用不同版本的 VisualStudio 和静态 CRT 链接构建的,因此不能在接口(interface)中使用 STL 类。 Boost 依赖性也是不可取的。这就是为什么我想要一个抽象接口(interface)。
如果我必须实现它,我会使用 MyVariantInterface::Get/SetData(int value_type_tag, byte* data) = 0
等函数创建一个抽象接口(interface),它可以在 DLL 之间安全地传递,加上一个模板化的包装器,它允许方便地存储、提取并在一个 DLL 的范围内进行所有大小/类型检查。
这样的东西已经存在了吗?
最佳答案
对于 Windows,您可以使用 VARIANT这在 COM 中被大量使用。
没有额外的依赖。 VARIANT 支持多种类型,包括 COM 接口(interface)(例如 IUknown)。您甚至可以用它传递多维数组。
关于C++ 抽象变体实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20489418/