נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שאלה בC++

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
BanKuZ
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 January 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4
נשלח בתאריך: 19 January 2011 בשעה 13:46 | IP רשוּם
ציטוט BanKuZ

יש לי CLASS A שמכיל מחרוזת ואופרטורים. ופונקצייה חיצונית
func(char*ss) ברצוני לגרום לשתי השורות האילו בMAIN לעבוד
ע"י שינוי \ הוספה בהגרדות הCLASS בלבד (הוספת אופרטור השמה
או casting ):
קוד:

A* pA;
...
A** ppA = pA;
func(*ppA);

אשמח לדעת אם למישהו יש רעיון
חזרה לתחילת העמוד הצג את כרטיס החבר של BanKuZ חפש הודעות אחרות של BanKuZ
 
BanKuZ
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 January 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4
נשלח בתאריך: 21 January 2011 בשעה 08:53 | IP רשוּם
ציטוט BanKuZ

אנסה לנסח מחדש:
כיצד ניתן לבצע המרה מ*Myclass ל- **Myclass או\ו ל*char
באמצעות אופרטור המרה או אופרטור השמה?
חזרה לתחילת העמוד הצג את כרטיס החבר של BanKuZ חפש הודעות אחרות של BanKuZ
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 21 January 2011 בשעה 17:39 | IP רשוּם
ציטוט shoshan

היי, מה מטרת ההמרה ?

בעופן עקרוני אפשר להשתמש ב-CAST רגיל ופשוט (או ב-reinterpret אפילו)

שניהם יביאו להתנהגות זהה (של reinterpret), כלומר התנהגות לנתונים שהמצביע מצביע אליהם כאילו היו מסוג אחר.

ואם אתה רוצה מצביע למצביע עצמו אז כמובן אתה צריך להשתמש ב-address-of (אופרטור &)

בהצלחה


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
BanKuZ
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 January 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4
נשלח בתאריך: 21 January 2011 בשעה 17:57 | IP רשוּם
ציטוט BanKuZ

תןדה רבה, אבל הכוונה היא ליצור את ההמרה מבלי לשנות שורות
קוד בפונקציית הMAIN. כלומר לבצע את ההמרה באמצעות
אופרטורים בCLASS עצמו. לצורך העניין הCLASS הוא משהו כזה:
קוד:
class Mystring {
public: char *s;
Mystring(const char *);
Mystring();
~Mystring(){}
Mystring operator=(const char* str) {
strcpy (s, str);
return *this;
}
operator char *()//Conversion operator
{
return this->name;
}
//... };

והפקודות לביצוע בפונקציית הMAIN הן:

קוד:
Mystring* p = new Mystring;
Mystring** pp = p;
//...
func (*pp); //func is declared func(char*)


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

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 21 January 2011 בשעה 20:43 | IP רשוּם
ציטוט shoshan

מה הבעיה באמת אחרי שמימשת המרה ל-char* ?



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
BanKuZ
משתמש מתחיל
משתמש מתחיל


הצטרף / הצטרפה: 19 January 2011
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4
נשלח בתאריך: 21 January 2011 בשעה 21:10 | IP רשוּם
ציטוט BanKuZ

ההמרה שמימשתי מתבצעת עבור המרה מ Mystring ל char* ולא מ
Mystring* ל char*.
כמובן שמימוש זהה לפוינטר לא עבד לי ולכן פירסמתי את הפוסט.
הרעיון הוא שבמהלך הקוד func נקראת לעיתים עם אובייקט
Mystring ולעיתים עם הפוינטר שלו Mystring*.
חזרה לתחילת העמוד הצג את כרטיס החבר של BanKuZ חפש הודעות אחרות של BanKuZ
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה