2014-10-03 82 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_; 
}