我99%肯定這個問題的答案是「沒有骰子」,但我還是想試試數組...重寫標/經營者[]的類型
我試圖重寫operator[]
。
我知道如何覆蓋它在給定類型調用:
struct Huh {
int x;
int operator[](float idx) { return -1; }
};
Huh h;
cout << h[123.4f] << end; // works, spits out -1
但是,如果我想改變我的下標,這些類型的數組的方式是什麼:
Huh h[10];
Huh h2 = h[123.4f]; // invalid!!
看樣子這是一個不可改變的C++行爲。也就是說,類型「Huh [10]」(或任何陣列類型)的operator[]
是禁止的。
或者,有沒有什麼方法可以爲陣列類型定義operator[]
?
我試圖讓operator[]
免費函數,只發現在C++中不允許。任何其他想法?
用於什麼?爲什麼不只是用你的自定義類型替換「排列類型」?你試圖得到什麼樣的邏輯? – 2012-02-22 00:48:12
在真實代碼中,我的'Huh'類型本身就是一個向量 - 它有N個元素。我使用N值索引來索引該類型。最後,我希望它能夠收集。 – 2012-02-22 01:34:59
你不能這樣做,我很高興。 – 2012-02-22 00:54:45