1
我需要在C++中构建一个异构类型的数组。 该数组是在编译时构造的,但其构造分散在不同的编译单元(即不同的源文件)中。 该数组应该很容易扩展为包含新类型作为应用程序进度的编程。 运行时应该访问结果数组。C++不同类型的数组
这可能吗?
我钻了一点点进入boost mpl和boost融合,但没有找到答案。
感谢
我需要在C++中构建一个异构类型的数组。 该数组是在编译时构造的,但其构造分散在不同的编译单元(即不同的源文件)中。 该数组应该很容易扩展为包含新类型作为应用程序进度的编程。 运行时应该访问结果数组。C++不同类型的数组
这可能吗?
我钻了一点点进入boost mpl和boost融合,但没有找到答案。
感谢
阵列是在编译时构造,然而,它的结构 分散在不同的编译单元
这是不可能的。翻译单位不知道其他翻译单位。由于除TU之外没有任何东西可以协调任何事情。
假设您想要在foo.cpp
中填充数组,请添加Foo
类型的对象。应该放置哪个索引?这是不可能确定的,因为不知道哪些其他指标存在。
链接器知道所有的TU。唉,链接器仍然很愚蠢,无法在链接时运行用户代码。如果链接器有点聪明,它可以为你的TU做类似myarray.push_back(Foo())
的操作。但它不能。
当然你仍然可以在运行时做push_back
。
也许如果你描述你的真实问题,集体将能够找到解决方案。
如果你已经在使用Boost,为什么不'std :: vector'? –
kennytm
2012-07-15 06:57:25
若要将不同类型放在数组中,如果它们具有公共基类,请将unique_ptr用于基类。否则,把它们放在一个数组中是没有意义的。你会想要一个结构或元组。 – 2012-07-15 07:00:54