有没有像boost :: ant或boost :: variant这样的变种的实现,但是有抽象的接口吗?
我想要的是在松散耦合的应用程序中传递DLL之间的变体。因此,如果一个DLL开始在变体中存储新内容,我想避免更改所有其他DLL的代码。所有的DLL都是使用不同版本的VisualStudio和静态CRT链接构建的,因此不能在接口中使用STL类。提升依赖性也是不可取的。这就是为什么我想要一个抽象的界面。
如果我必须实现它,我会使用像MyVariantInterface::Get/SetData(int value_type_tag, byte* data) = 0
这样的函数创建一个抽象接口,它可以安全地在DLL之间传递,加上一个模板化的包装允许方便的存储,提取,并在一个DLL的范围内进行所有大小/类型检查。
这样的事情是否已经存在?
答案 0 :(得分:1)
对于Windows,您可以使用在COM中经常使用的VARIANT。
没有额外的依赖关系。 VARIANT支持许多类型,包括COM接口(例如IUknown)。你甚至可以用它传递多维数组。