我已将引用变量添加到类中,以充当声明为私有成员的数组的访问器。基本上,我有类似
的东西class someClass {
private:
int a[3];
public:
int &a0;
int &a1;
int &a2;
someClass() : a0(a[0]), a1(a[1]), a2(a[2]) {}
someClass& operator=(const someClass &other) {
std::memcpy(a, other.a, sizeof(a));
return *this;
}
};
但是,它始终无法正常工作。我在这里错过了什么?是否有更好的方式来访问a
.a0
,.a1
等元素。
答案 0 :(得分:2)
不应使用引用,而应考虑使用混合的联合:
struct Vector3
{
union {
float a[3];
struct { float x, y, z; };
struct { float r, g, b; };
};
};
// v.a[0] is an alias for v.x
Vector3 v = { 0.0f, 0.1f, 0.2f };
// you can see this clearly since they have the same address:
std::cout << (&v.a[0] == &v.x) << std::endl;
这应该提供你实际想要实现的目标。