如何在C ++中重载类访问器

时间:2019-11-09 18:55:34

标签: c++

我有一个只有一个int值的类,还有2个扩展该类的类。为了简单起见,我希望能够仅通过调用类的实例而不是instance.val来访问此int值。

class thing {
  public:
    int val;
    thing(int a) : val(a) {}
};

class proc: public thing {
  public:
    proc (int a) : thing(a){}
};

class res : public thing {
  public:
    res(int a) : thing(a){}
};

int main(){
  proc x (3);
  res y (5);
  int* array = new int[10];

  //I want to be able to do this:
  cout << x << " " << y << endl;
  array[x]; array[y];

  //rather than this:
  cout << x.val << " " << y.val << endl;
  array[x.val]; array[y.val];
}

基本上,我想将创建的类用作int,因为我需要存储的只是int值,但是我需要2种不同类型的int,因为它们表示2种稍有不同但几乎相同的东西。 / p>

1 个答案:

答案 0 :(得分:1)

将转换运算符添加到您的班级:

class thing {
    public:
        int val;
        thing(int a) : val(a) {}

        operator int() const { return val; }
};

现在,您可以在接受int的任何地方传递类的实例。