C ++抽象变体实现

时间:2013-12-10 08:26:04

标签: c++ dll abstract-class variant

有没有像boost :: ant或boost :: variant这样的变种的实现,但是有抽象的接口吗?

我想要的是在松散耦合的应用程序中传递DLL之间的变体。因此,如果一个DLL开始在变体中存储新内容,我想避免更改所有其他DLL的代码。所有的DLL都是使用不同版本的VisualStudio和静态CRT链接构建的,因此不能在接口中使用STL类。提升依赖性也是不可取的。这就是为什么我想要一个抽象的界面。

如果我必须实现它,我会使用像MyVariantInterface::Get/SetData(int value_type_tag, byte* data) = 0这样的函数创建一个抽象接口,它可以安全地在DLL之间传递,加上一个模板化的包装允许方便的存储,提取,并在一个DLL的范围内进行所有大小/类型检查。

这样的事情是否已经存在?

1 个答案:

答案 0 :(得分:1)

对于Windows,您可以使用在COM中经常使用的VARIANT

没有额外的依赖关系。 VARIANT支持许多类型,包括COM接口(例如IUknown)。你甚至可以用它传递多维数组。