मैं एक साधारण वर्ग, जिसका सूचकांक ऑपरेटर मैं अतिभारित किया है:सी ++ अतिभारित सूचकांक करने के लिए तीर (इस -> [])
class dgrid{
double* data; // 1D Array holds 2D data in row-major format
public:
const int nx;
const int ny;
double* operator[] (const int index) {return &(data[index*nx]);}
}
इस तरह एक 2d सरणी के रूप में काम करता है dgrid[x][y]
, लेकिन डेटा सटा हुआ है याद में।
(*this)[i][j] = (*this)[i+1][j]
+ (*this)[i-1][j]
+ (*this)[i][j+1]
+ (*this)[i][j-1]
- 4*(*this)[i][j];
वहाँ एक बेहतर तरीका है:
हालांकि, अंदर सदस्य कार्यों से थोड़ा और भद्दा है, मैं (*this)[x][y]
जो काम करता है, लेकिन बदबूदार लगता है, खासकर जब मैं की तरह वर्गों है की तरह कुछ करने की ज़रूरत है यह करने के लिए? this->[x][y]
की तरह कुछ (लेकिन यह काम नहीं करता है)। क्या एक छोटा सा कार्य f(x,y) returns &data[index*nx+ny]
एकमात्र विकल्प का उपयोग कर रहा है?
'ऑटो और स्वयं = * यह; स्वयं [i] [j] = ...; –
या, अधिक साहसी प्रकार के लिए, '(* यह)' को '[0] 'के रूप में लिखा जा सकता है ... –
अधिक क्लंकी, लेकिन आप भी क्या हैं इसके बाद: 'यह-> ऑपरेटर [] (i) [j] ':) – MatiasFG