在C++中,是否可以不使用预处理器就能够用不同的名称引用同一个变量?
为了达到与这个伪代码相同的效果:
struct vec3f {
float[3] values;
};
struct color : public vec3f {
#define r values[0]
#define g values[1]
#define b values[2]
};
color c;
c.r = 0.5f;
以下代码在语义上是正确的,但在结构体中分配了三个引用的空间:
struct color : public vec3f {
float& r;
float& g;
float& b;
color() : r(values[0]), g(values[1]), b(values[2]) { }
};
有没有一种方法可以在不增加结构体大小的情况下进行编译时名称替换?