ABA


"השמה של CLASS בC++ ..."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10674 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10674
cfirzzz לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
5060 הודעות, 2 פידבק
   18:53   26.04.12   
אל הפורום  
  השמה של CLASS בC++ ...  
 
   יש לי CLASS מסויים שיצרתי.
עכשיו אני כותב לו פונקציות לכמה אופרטורים,
אחת מהם היא חיסור (-) בין שני אובייקטים.
מכיוון שאני לא באמת רוצה לחסר מאחד המספרים שנשלחו לפונק' (לא המחסר ולא המחוסר) אלא לבצע את החיסור ולהעביר את הערך/אובייקט, אני מנסה :
ליצור אובייקט חדש זמני (אין בעיה כמובן).
ואז לבצע השמה של המחוסר לאותו אובייקט
אני מנסה לעשות משהו כזה :
class_name temp;
temp=this;
הבעיה היא שהקומפיילר לא מוכן לקבל את ההשמה הזאת
כתבתי פונקציה של אופרטור השמה שמקבלת פוינטר לclass_name... (שלמיטב הבנתי, זהו סוגו של this). אך עדיין אני מקבל את השגיאה הבאה :

error C2440: 'initializing' : cannot convert from 'class_name *const ' to 'class_name'

עכשיו, אם הוא מגדיר את this בתור class_name, אז ההשמה הרגילה בין שני אובייקטים (שעובדת!) הייתה נכנסת לפעולה, ואם הוא מגדיר את This בתור פוינטר ל class_name אז ההשמה השנייה שכתבתי אמורה לעבוד !

עזרה ? :\


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לא ממש הבנתי מה השורה המדויקת שניסית להריץ... Dotan  26.04.12 19:33 1
     תודה, הסתדרתי, ודווקא זה לא מדוייק מה שכתבת cfirzzz 26.04.12 21:20 2
         נו ברור... Dotan  26.04.12 21:50 3
             אני רוצה לקרוא ל copy constructor :) cfirzzz 26.04.12 22:34 4

       
Dotan  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.10.03
2849 הודעות, 2 פידבק
   19:33   26.04.12   
אל הפורום  
  1. לא ממש הבנתי מה השורה המדויקת שניסית להריץ...  
בתגובה להודעה מספר 0
 
   אבל שים לב שthis הוא pointer ולכן אם אתה רוצה לעשות השמה של this לתוך משתנה אחר הוא גם צריך להיות מצביע, כלומר:

class_name* temp;
temp=this;


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
cfirzzz לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
5060 הודעות, 2 פידבק
   21:20   26.04.12   
אל הפורום  
  2. תודה, הסתדרתי, ודווקא זה לא מדוייק מה שכתבת  
בתגובה להודעה מספר 1
 
   כי גם אני חשבתי שזה פוינטר
אבל כאשר כתבתי :
class_name temp;
temp=*this
זה עבד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Dotan  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.10.03
2849 הודעות, 2 פידבק
   21:50   26.04.12   
אל הפורום  
  3. נו ברור...  
בתגובה להודעה מספר 2
 
   כי this* מחזיר לך אובייקט ולא מצביע ואז אתה יכול להכניס אותו לclass_name
אבל this יכול להיכנס רק לclass_name*
ומה שאתה עושה פה סתם קורא לcopy constructor כשאתה יכול להמנע מזה ע"י שמירת pointer.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
cfirzzz לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
5060 הודעות, 2 פידבק
   22:34   26.04.12   
אל הפורום  
  4. אני רוצה לקרוא ל copy constructor :)  
בתגובה להודעה מספר 3
 
   תודה על העזרה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net