异构类型的c++数组

c++ array of heterogeneous types

本文关键字:数组 c++ 类型 异构      更新时间:2023-10-16

我需要在c++中构建一个异构类型的数组。数组是在编译时构造的,但是,它的构造分散在不同的编译单元(即不同的源文件)中。随着应用程序编程的进行,数组应该很容易扩展为包含新的类型。生成的数组应该在运行时访问。

这可能吗?

我深入研究了助推mpl和助推融合,但没有找到答案。

感谢

数组是在编译时构造的,但是它的构造分散在不同的编译单元中

这是不可能的。翻译单位不了解其他翻译单位。由于除了TU之外什么都没有,所以不可能协调任何事情。

假设您想在foo.cpp中填充数组,添加一个类型为Foo的对象。它应该放在哪个索引处?由于不知道还有哪些其他指数,因此无法确定。

链接器知道所有TU。遗憾的是,链接器仍然相当愚蠢,无法在链接时运行用户代码。如果链接器更聪明一点,它可以为TU做一些类似myarray.push_back(Foo())的事情。但它做不到。

当然,您仍然可以在运行时执行push_back

也许如果你描述你真正的问题,集体就能找到解决方案。