עבור לתוכן

פרמטרים ל template ב ++C

Featured Replies

פורסם

שלום לכולם,

מישהו יכול לעזור לי להתגבר על כאב ראש גדול מאד ולהסביר לי מה מותר ומה אסור בתור ארגומנט ל template.

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

פורסם

בעצם כל דבר שיכול להחשב כ- data type (כולל class כמובן) אפשר לשלוח בתור ארגומנט ל- template.

עריכה: כמובן וגם ערכים (parameterized template)... בעצם אפשר לשלוח הכל, כל מה שהקומפיילר עושה זה copy&paste, ואתה צריך לדאוג שהשימוש ב- template parameters יהיה חוקי (כמובן שהקומפיילר יצעק לך אם תהיה בעיה, אבל אתה כנראה לא תבין מזה כלום אם יש לך template מסובך, יש אפילו כלים ספציפיים לפירוש השגיאות האלה..).

פורסם

Template אוכל הכל,

אבל מציב כמה תנאים.

אם זה class שכתבת, ויש בtemplate (פונקציה במקרה שלנו) שימוש באופרטורים מסוימים כמו + או ==, חייבים להיות מוגדרים בקלאס שלך האופרטורים המתאימים

אחרת הtemplate לא יעבוד.

פורסם

Template אוכל הכל,

אבל מציב כמה תנאים.

אם זה class שכתבת, ויש בtemplate (פונקציה במקרה שלנו) שימוש באופרטורים מסוימים כמו + או ==, חייבים להיות מוגדרים בקלאס שלך האופרטורים המתאימים

אחרת הtemplate לא יעבוד.

האמת לא הבנתי.. מה ספציפי פה דווקא לתבניות שלא תקף למחלקה רגילה?

אגב אני שונא תבניות, בעיקר את הקטע שצריך לשים את כל המימוש ב header (יש כל מיני workarounds מגעילים לזה).

פורסם

זה בידיוק אותו דבר, רק שאם אתה שולח לTEMPLATE מחלקה מסויימת, אתה צריך לדאוג שכל מה שאתה משתמש בו בתוך היישום של הפונ שלך מוגדר. כלומר, אם אתה משתמש שם בחיבור(+), אתה צריך לדאוג שהחיבור יהייה מוגדר גם במחלקות, שאתה "שולח".

פורסם

אה נו כמובן..

בכל מקרה, templates = איכסה ביכסה :P

(מבחינת תכנות, מבחינת שימוש - תודה לאל שזה קיים)

פורסם

למה? זה נורא נחמד וקל לשימוש, במקום לעשות העמסה ענקית, עושים TEMPLATE אחד קטן. הבעיה מתחילה רק כאשר משתמשים בסוגי משתנים לא סטנדרטיים(INT CHAR FLOAT וכו, לא CHAR*).

פורסם

הבלגן האמיתי זה לכתוב templates, לא להשתמש בהם.

אה כן, וגם להבין שגיאות קומפילציה שיש לך הגדרה של פונקציה שתופסת 5 שורות.

פורסם

אף פעם לא ראיתי הגדרה של פונ על 5 שורות.

פורסם

תיצור map בין string ל- pair של string ועוד משהו, ותנסה לעשות set ולהעביר פרמטר לא מתאים.

שעות של הנאה...

ארכיון

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

דיונים חדשים