2014-10-03 42 views
0

是否有任何方式来重载数组下标操作符在C++以外的类?我想在数组中读取/写入时调用用户定义的函数。重载数组下标运算符

例如:

int* array = new int[10]; 
array[0] = 5; 

当数组[0]写,我想打电话给我自己的功能。我知道它可以通过重载operator [](例如SafeArray类)在类内部完成。

谢谢。

+0

恐怕没有,因为这只是分解为指针的设定,而不是一个函数调用。 – matsjoyce 2014-10-03 16:10:45

+0

你不能像那样重载指针解引用('array [0]'等于'*(array + 0)')。 – 2014-10-03 16:13:38

+3

不,你不能。作为一个简单的经验法则,所有用户定义的运算符必须至少采用一个用户定义类型的参数(包括隐藏的“this”用于成员函数)。 – 2014-10-03 16:14:39

回答

0

你想要的是一个包装类,像这样:

template<typename T> 
struct SubscriptWrapper { 
    SubscriptWrapper(T* array) : array_(array) {}; 
    T& operator[](size_t index) { 
     // your magic goes in here 
    }; 
    T* array_; 
}