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