我有一个只有一个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>
答案 0 :(得分:1)
将转换运算符添加到您的班级:
class thing {
public:
int val;
thing(int a) : val(a) {}
operator int() const { return val; }
};
现在,您可以在接受int
的任何地方传递类的实例。