0
是否有任何方式来重载数组下标操作符在C++以外的类?我想在数组中读取/写入时调用用户定义的函数。重载数组下标运算符
例如:
int* array = new int[10];
array[0] = 5;
当数组[0]写,我想打电话给我自己的功能。我知道它可以通过重载operator [](例如SafeArray类)在类内部完成。
谢谢。
是否有任何方式来重载数组下标操作符在C++以外的类?我想在数组中读取/写入时调用用户定义的函数。重载数组下标运算符
例如:
int* array = new int[10];
array[0] = 5;
当数组[0]写,我想打电话给我自己的功能。我知道它可以通过重载operator [](例如SafeArray类)在类内部完成。
谢谢。
你想要的是一个包装类,像这样:
template<typename T>
struct SubscriptWrapper {
SubscriptWrapper(T* array) : array_(array) {};
T& operator[](size_t index) {
// your magic goes in here
};
T* array_;
}
恐怕没有,因为这只是分解为指针的设定,而不是一个函数调用。 – matsjoyce 2014-10-03 16:10:45
你不能像那样重载指针解引用('array [0]'等于'*(array + 0)')。 – 2014-10-03 16:13:38
不,你不能。作为一个简单的经验法则,所有用户定义的运算符必须至少采用一个用户定义类型的参数(包括隐藏的“this”用于成员函数)。 – 2014-10-03 16:14:39