Redian新闻
>
C++编程问题:union inside struct
avatar
C++编程问题:union inside struct# Programming - 葵花宝典
b*t
1
比如我要定义一个class叫做vec(向量),它有三个变量和一堆函数:
class vec {
public:
double x,y,z;
public:
vec(){};
~vec() {};
...
}
现在我希望定义某种union结构能让我也能用vec.xa[0],vec.xa[1],vec.xa[2]
来访问vec.x, vec.y, vec.z,如何能够实现呢?谢谢。。。
avatar
p*o
2
how about this?
struct xxx {double x, y, z;};
union
{
double xa[3];
xxx v;
};
however, you need to use vec.v.x, vec.v.y, vec.v.z
if you insist on vec.x, vec.y, vex.z, probably #define
could be used, just as sockaddr_in

【在 b*******t 的大作中提到】
: 比如我要定义一个class叫做vec(向量),它有三个变量和一堆函数:
: class vec {
: public:
: double x,y,z;
: public:
: vec(){};
: ~vec() {};
: ...
: }
: 现在我希望定义某种union结构能让我也能用vec.xa[0],vec.xa[1],vec.xa[2]

avatar
s*e
3
楼主这个说要union也是让我百思不得其解,不过洗个澡出来发现了另外一个好办法,
就是用引用:)
#include
class vec {
public:
double xa[3];
double & x;
double & y;
double & z;
public:
vec() : x(xa[0]), y(xa[1]), z(xa[2]) {}
~vec() {}
};
void main() {
vec v;
v.x = 1;
v.y = 2;
v.z = 3;
printf("%f, %f, %f\n", v.xa[0], v.xa[1], v.xa[2]);
}

【在 p***o 的大作中提到】
: how about this?
: struct xxx {double x, y, z;};
: union
: {
: double xa[3];
: xxx v;
: };
: however, you need to use vec.v.x, vec.v.y, vec.v.z
: if you insist on vec.x, vec.y, vex.z, probably #define
: could be used, just as sockaddr_in

avatar
p*o
4
这个改变了vec的大小且影响速度,估计楼主不喜欢...
也许搞个double & x()就可以了。

【在 s***e 的大作中提到】
: 楼主这个说要union也是让我百思不得其解,不过洗个澡出来发现了另外一个好办法,
: 就是用引用:)
: #include
: class vec {
: public:
: double xa[3];
: double & x;
: double & y;
: double & z;
: public:

avatar
s*e
5
用函数也是我比较喜欢的做法。
不过用引用应该不会影响速度,因为引用也就基本上像一个指针而已。

【在 p***o 的大作中提到】
: 这个改变了vec的大小且影响速度,估计楼主不喜欢...
: 也许搞个double & x()就可以了。

avatar
b*t
6
这个看起来是个办法,谢谢!我对reference variable不熟悉,请问构造函数里面
定义了等价性以后是不是就一直等价了?

【在 s***e 的大作中提到】
: 楼主这个说要union也是让我百思不得其解,不过洗个澡出来发现了另外一个好办法,
: 就是用引用:)
: #include
: class vec {
: public:
: double xa[3];
: double & x;
: double & y;
: double & z;
: public:

avatar
s*e
7
是这样的。只有第一次=操作符是用于将该引用指向某变量。之后=操作符都是赋值操作。
我还得谢谢你提醒了我想起了以前看过的对引用变量的说明呢。

【在 b*******t 的大作中提到】
: 这个看起来是个办法,谢谢!我对reference variable不熟悉,请问构造函数里面
: 定义了等价性以后是不是就一直等价了?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。