overloading operator[][] in c++

sadov

New member
overloading operator[][] in c++

מישהו יודע אם אפשר ? הצליח ??? תודה
 

ke

New member
אופרטור []

לדעתי, אין דבר כזה אופרטור [][] בשפת c++. זאת הפעלה של אופרטור [] פעמיים. ולכן אם אתה רוצה לכתוב מחלקה שתוכל לקבל את האופרטור, צריך לדאוג שמה שהאופרטור [] על המחלקה מחזיר, יהיה כזה שגם עליו ניתן להפעיל אופרטור [], אבל אי אפשר ישירות להפעיל את זה על המחלקה. בהצלחה.
 

ihovav

New member
תעשה ככה :

אני מניח שמדובר במשהו כמו מערך דו מימדי : תעשה את האופרטור [], הוא יקבל INT ויחזיר אובייקט של מערך חד מימדי, שגם לו יהיה אופרטור [], וככה תוכל לממש "אופרטור [][]".
 

sadov

New member
בעיה

1. חשבתי כבר על הרעיון שלך אבל הבעיה היא כזאת : אם יש לי מתריצה של INT** - INT אופרטור [] הראשון אמור להחזיר *INT אופרטור [] השני צריך להחזיר &INT הקומפיילר לא יכול לקבל את שתי הפונקציות הפרוטוטייפ שלהן זהה לחלוטין מבחינתו (הוא לא בודק את ערך החזרה), יצירת שני CLASSSES נפרדים תיצור OVERHEAD גבוהה שאני לא רוצה. 2. ראיתי פעם ב FAQ´S באתר של stroustrap שאלה כזאת בדיוק , הוא הסביר שם איך לבצע את זה, רק שאני לא מוצא את זה עכשיו !!! (את ה FAQ לא את האתר)
 

Imperia

New member
אתה צריך לצור אובייקט אחר

"מערך של אינטים" - שיעטוף int[] (כלומר יחזיק כזה דבר). המטריצה שלך תחזיק מערך של כאלה. האופרטור [] על המטריצה יחזיר אובייקט מערך - והאובייקט [] של המערך מחזיר int.
 

dogood

New member
דוגמא

int* & stam::eek:pertor[](int index) { if (index > size && index >=0) // size = אורך הוקטור הראשון return arr[index]; } MEMBER חייב להיות הסברים נוספים? רק תשאל
 
למעלה