我想要做這樣的事情:如何判斷一個函數是否被用來修改信息?
class bar{
public:
bool edit;
int foo[];
//If the intention is to change some value in foo:
float & operator [] (int i){
edit = true;
return foo[i];
}
//But if I just want to read
float & operator [] (int i){
return foo[i];
}
}
我想這樣做,如果這是可以做到的正確途徑。
簡單的解決方案是存儲兩個向量,舊的和新的,並每次檢查它們。但我想要一個高效的解決方案,而不必每次更改某個值時手動更改「編輯」。
也許有r值和l值?
編輯: 的想法是,例如,如果我將檢查「富」的總和,存儲的價值,所以我沒有,我想知道的總和每次檢查FOO,只有當FOO已改性。
編寫一個跟蹤修改的類型。把這些放在你的陣列中。 – molbdnilo
問題是代碼的某些部分可能會選擇可修改的版本,但不會對其進行修改。是定義一個浮動類與=運算符標誌着它已被修改一個選項? – cup
您可能不希望將非常量引用返回到死值,因爲使用該值是未定義的行爲。你應該有函數對數組元素類型的返回引用:'float foo []; float&operator []'或'int foo []; int&operator []' – Caleth