gpt4 book ai didi

C++ 匿名 union 重新声明错误

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:39 26 4
gpt4 key购买 nike

我想创建一个可用于存储 3D 坐标或线性方程的结构。这是代码:

struct myStruct {
union {
// coordinates (3d)
struct {
int x,y,z;
};
// linear equation (ax+b)
struct {
int a,b,x;
};
};
};

我收到以下错误:

error: redeclaration of ‘int myStruct::<anonymous union>::<anonymous struct>::x’

我在 linux mint 18.04,g++ (5.4.0) 上,用 --std=c++11 编译。

我明白这个问题。但有几个问题。

  1. 我看到一些与 Windows 相关的工作,为什么?
  2. 实现它的最佳方式是什么,以便它在两者 (linux/win) 上都能很好地工作?

最佳答案

只要给他们起个名字。这应该没问题:

struct myStruct {
union {
struct coordinates { int x,y,z; };
struct linear_equation { int a,b,x; };
coordinates coord;
linear_equation lin_eq;
};
};

我还允许自己向 union 添加一些成员。但是,这两个结构具有相同类型和数量的成员,因此恕我直言,使用 union 会带来麻烦是值得怀疑的。

关于C++ 匿名 union 重新声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49997898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com