异构类型的c++数组
c++ array of heterogeneous types
我需要在c++中构建一个异构类型的数组。数组是在编译时构造的,但是,它的构造分散在不同的编译单元(即不同的源文件)中。随着应用程序编程的进行,数组应该很容易扩展为包含新的类型。生成的数组应该在运行时访问。
这可能吗?
我深入研究了助推mpl和助推融合,但没有找到答案。
感谢
数组是在编译时构造的,但是它的构造分散在不同的编译单元中
这是不可能的。翻译单位不了解其他翻译单位。由于除了TU之外什么都没有,所以不可能协调任何事情。
假设您想在foo.cpp
中填充数组,添加一个类型为Foo
的对象。它应该放在哪个索引处?由于不知道还有哪些其他指数,因此无法确定。
链接器知道所有TU。遗憾的是,链接器仍然相当愚蠢,无法在链接时运行用户代码。如果链接器更聪明一点,它可以为TU做一些类似myarray.push_back(Foo())
的事情。但它做不到。
当然,您仍然可以在运行时执行push_back
。
也许如果你描述你真正的问题,集体就能找到解决方案。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '