【发布时间】:2015-12-14 13:53:21
【问题描述】:
如果我有一个包含数组的 C++ 联合。我想使用一组唯一标识符访问数组的每个元素。 (这似乎是一件奇怪的事情。在我的应用程序中,我有一个联合,其中包含指向 8 个方向的单元格的指针,这些指针表示某个对象如何在单元格之间移动。有时编写使用数组索引的算法很方便,但是对于喜欢使用命名标识符而不是不太明显的索引的最终用户来说,这并不方便。)
例子:
union vector
{
double x;
double y;
double data[2];
}
我相信x 和y“是一回事”,所以真的必须:
struct v
{
double x, y;
}
union vector
{
v data_v_format;
double data_arr_format[2];
}
然后使用:
vector v1;
v1.data_arr_format[0] = v1.data_v_format.y; // copy y component to x
不幸的是,这给联合增加了一层难看的语法。有没有办法完成语法指定的原始任务:
union vector
{
double x;
double y;
double data[2];
}
其中x 等价于data[0] 而y 等价于data[1]?
我可以编写一个类来执行此操作,其中“逻辑命名的标识符成为函数,返回数组的单个组件” - 但有更好的方法吗?
【问题讨论】:
-
我的 C++非常生锈了。但是,如果您尝试合并
double x, y和double data[2]会发生什么? -
@EricGalluzzo 我不知道 GCC 5 会发生什么或应该发生什么......
-
这个问题有很多与此相关的好信息:stackoverflow.com/questions/2253878/…