我有一个包含整数数组的类,并且为了获得该数组的引用,下标运算符 [] 被重载(这是一个删除了逻辑检查等的精简示例):
class Foo {
public:
Foo() {};
// and overload the [] operator
int& operator[](const int index);
private:
const int LEN = 7;
int arr[LEN];
};
int& Foo::operator[](const int index) {
return arr[index];
}
这种类的一个实例的指针(名为 boo)被传递给一个函数。现在我想做的是:
int val = boo[0];
但它失败了“错误:从'Foo'类型到'int'类型的无效转换”。
我的第一个想法是我传递一个指向类的指针,我应该将实例的副本带入范围并使用该副本。这行得通。但是我很好奇是否可以将用户定义的类型用作真正的内置类型?我应该使用包装器吗?