कोई [][]
ऑपरेटर नहीं है। वास्तव में क्या होता है कि दूसरा []
पहले []
द्वारा लौटाए गए चर पर संचालित होता है।क्योंकि पहले से ही उस कार्यक्षमता है, यह [][]
ऑपरेटर मौजूद होने के लिए अस्पष्टता पैदा करेगा।
उदाहरण के लिए: मान लीजिए कि आपके पास T
किसी प्रकार के x
है।
T x = new T();
अगर हम []
ऑपरेटर का उपयोग, मान लें कि अन्य प्रकार Q
के एक चर दिया जाता है करते हैं:
Q y = x[0];
और फिर प्रकार Q
के एक चर पर []
ऑपरेटर का उपयोग प्रकार के एक चर वापस कर सकती है R
:
R z = y[0];
इसलिए x[][]
टी के एक चर रिटर्न
S a = x[0][0];
संकलक जानने का कोई तरीका होता है, तो उस पर [][]
ऑपरेटर का उपयोग करना चाहिए: ype आर
चलो कहते हैं कि हम वास्तव में प्रकार टी के लिए [][]
ओवरलोड इस तरह है कि यह एक प्रकार S लौटे सक्षम थे चलो x
एक प्रकार S
वैरिएबल लौटने के लिए, या []
ऑपरेटर को एक प्रकार में दो बार R
परिवर्तनीय लौटने के लिए उपयोग करें। यह उपरोक्त वर्णित अस्पष्टता है।
आपका सबसे अच्छा शर्त अगर आप वर्ग कोष्ठक का उपयोग कर पर अटक कर रहे हैं operator[]
है एक चर जो भी []
अतिभारित है (या शायद एक ही प्रकार के एक चर, एक ध्वज सेट के साथ) लौटने के लिए, और है जो शुरू में दूसरे []
के साथ परिवर्तनीय सौदा वापस कर दिया।
लेकिन यहां सबसे अच्छा समाधान (जैसा कि पहले से ही another answer में उल्लिखित है) ()
जैसे विभिन्न ऑपरेटर का उपयोग करना है।
सी ++ में कोई ऑपरेटर [] [] नहीं है। –
अधिभार द्वारा लौटाए गए सरणी को ओवरलोड करें [] ओएच SHI- –