我需要在 C++ 中构建一个异构类型的数组。数组是在编译时构建的,但是它的构建分散在不同的编译单元(即不同的源文件)中。随着应用程序的编程进展,该数组应该很容易扩展以包含新类型。应在运行时访问生成的数组。
那可能吗?
我对 boost mpl 和 boost fusion 进行了一些研究,但没有找到答案。
谢谢
我需要在 C++ 中构建一个异构类型的数组。数组是在编译时构建的,但是它的构建分散在不同的编译单元(即不同的源文件)中。随着应用程序的编程进展,该数组应该很容易扩展以包含新类型。应在运行时访问生成的数组。
那可能吗?
我对 boost mpl 和 boost fusion 进行了一些研究,但没有找到答案。
谢谢
数组是在编译时构建的,但是它的构建分散在不同的编译单元中
这是不可能的。一个翻译单元不知道其他翻译单元。由于除了 TU 之外什么都没有,因此不可能协调任何事情。
假设您要在 中填充数组foo.cpp
,添加一个类型为 的对象Foo
。应该放在哪个索引?无法确定,因为不知道还有哪些其他索引。
链接器知道所有的 TU。唉,链接器仍然相当愚蠢,无法在链接时运行用户代码。如果链接器更聪明一点,它可以myarray.push_back(Foo())
为你的 TU 做一些事情。但它不能。
当然,您仍然可以push_back
在运行时执行。
也许如果您描述您的真正问题,集体将能够找到解决方案。