我正在寫一個簡單的模板,它將值存儲在數組中,檢查沒有重複。模板C++一次性重載多個運算符
我重載[]運算符,以便它可以用來就像一個普通的數組:
T operator [] (int index) { return _array[index]; }
但是,如果我想直接更改值不工作,我當然可以寫一些changeVal(INT索引,T值)函數,但如果我可以使用=運算符來完成它,那將更有趣。我可以一次超載多個操作員嗎?像:
operator [] = (int index, T val) { _array[index] = val; }
這不爲我編譯:有沒有辦法實現這一目標?
顯然我是唯一一個想到這個問題的人,或者答案只是隱藏在一些像「重載操作員問題」這樣的通用句子的數百萬個問題中,但我不會花我的整個生命瀏覽那些(已經做得更老了)。
非常感謝大家,祝你有美好的一天!
編輯:(見下面的評論) 即使我的主要問題得到解決,主要問題的答案 - 是否可能以及如何(即使有一些技巧或任何)仍然會被讚賞 - 這將是質量信息當然 !!!感謝大家 !!!
[OT]:請注意,如果你可能通過'operator []'改變值,你可能會破壞你的唯一性... – Jarod42
非常好的一點!!!我把這個檢查放在一個add(T e)函數中,但是如果你說如果我用[]來改變一個值,它可能也需要檢查...所以最後我還是需要以某種方式重載[]和=一次,或檢測到[]重載是用來更改值...有沒有人有一個想法如何做到這一點? –
'operator []'需要用'operator ='返回一個* Proxy *,並隱式轉換爲'const T'。 – Jarod42