【发布时间】:2012-01-30 06:23:43
【问题描述】:
在 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;
以下具有正确的语义,只是它在结构中为 3 个引用分配空间:
struct color : public vec3f {
float& r;
float& g;
float& b;
color() : r(values[0]), g(values[1]), b(values[2]) { }
};
有没有办法在不增加结构大小的情况下获得这种编译时名称替换?
【问题讨论】:
标签: c++ reference variable-assignment