עבור לתוכן

העברה של אובייקט של קלאס

Featured Replies

פורסם

שלום

יש לי אובייקט מסוים, שאני מייצר פעם אחת, בתוכנית הראשית.

האובייקט הוא אובייקט של קלאס OneWire, שישמש אותי לתקשורת עם כמה רכיבים שונים שיושבים על באס OneWire אחד.

אני מייצר אותו כך:

OneWire O_OneWire(Leg_OneWire);

אני רוצה להעביר O_OneWire לכמה קלאסים אחרים.

אני רוצה שההפנייה לאובייקט OneWire הזה תישמר בכל אחד מהקלאסים האחרים,

כלומר כולם מפנים לאותו אובייקט אחד של OneWire.

כיוון שהנושא של ה-& וה-* מאד מבלבל, השאלה שלי היא בעצם:

1) איך להגדיר את ה-field בקלאסים של הרכיבים, שאמורים לשמור הפנייה לאובייקט OneWire?

2) איך להגדיר את הפרמטר בקונסטרקטור של הקלאסים?

ולבסוף:

3) איך לרשום את שורת ההשמה בתוך הקונסטרקטור, ששומרת מהפרמטר של ה-Ctor אל ה-field?

תודה רבה

card

פורסם

נראה לי שזו שאלה לפורום תכנות, לא לארדואינו...

פורסם

לא ממש הבנתי מה רצית לעשות, אתה יכול לפרט יותר, אולי עם יותר קוד?

בכל מקרה, אתה יכול להשתמש במצביעים (*) מתייחס לתוכן שבזיכרון ו& מתייחס לכתובת עצמה.

פורסם
  • מחבר

כן בסוף יש שתי אפשרויות לפתרון של זה:

ע"י שימוש בפוינטרים:

* בהגדרה של ה-field

* בהגדרה של הפרמטר של הפונקציה/Ctor שמקבלת את הפרמטר

& בשליחה שלו(כשקוראים לפונקציה/Ctor)

ואז בכל מקום כשרואים למתוד, משתמשים בחץ: <-

מתברר שיש ב-++C גם "Reference" - זה היה חדש לי.

ע"י שימוש ב-Reference:

& בהגדרה של ה-field

& בהגדרה של הפרמטר של הפונקציה/Ctor שמקבלת את הפרמטר

[כלום] בשליחה שלו(כשקוראים לפונקציה/Ctor)

ואז בכל מקום כשרואים למתוד, משתמשים כרגיל, בנקודה: .

בחרתי בסוף ב-Reference.

פורסם

אם אני מבין נכון, אתה רוצה ליצורInstance חדש בכל פעם שאתה שולח את האובייקט בפרמטר.

זה מאד לא Object Oriented...

תממש את clone(), הווה אומר יצירת אובייקט חדש והשמה של כל הType-ים הבסיסיים בו


foo clone() {
temp = foo()
temp.x = this.x
temp.y = this.y
}

ואז את הInstance שיצר Clone שלח כאובייקט

פורסם
  • מחבר

אם אני מבין נכון, אתה רוצה ליצורInstance חדש בכל פעם שאתה שולח את האובייקט בפרמטר.

לא..

האובייקט קיים פעם אחת..

וכולם צריכים להשתמש באותו אובייקט, הוא לא צריך להשתכפל.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים