添加对类的引用以充当访问者

时间:2014-03-27 09:17:54

标签: c++ reference

我已将引用变量添加到类中,以充当声明为私有成员的数组的访问器。基本上,我有类似

的东西
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等元素。

1 个答案:

答案 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;

这应该提供你实际想要实现的目标。