לדלג לתוכן

2.1 - תבניות והפקת קוד - תרגול

תרגול - איפה נוצר המימוש

צרו את שלושת הקבצים twice.hpp, twice.cpp ו־main.cpp מן ההרצאה. בנו אותם יחד, שמרו את הודעת הבנייה והסבירו למה declaration אינו מספיק כדי להבטיח שהמימוש המבוקש נוצר.

פתרו את הבעיה בשתי דרכים נפרדות: העברת הגוף ל־header, ו־explicit instantiation ל־int בקובץ cpp. הוסיפו קריאה ל־double ובדקו איזו גרסה ממשיכה לעבוד בלי שינוי נוסף.

משפחת טיפוסים

כתבו תבנית מחלקה בשם Category שמחזירה תווית עבור טיפוס רגיל, pointer ומערך בגודל קבוע. השתמשו ב־partial specialization למערך, ובדקו את int[3] ואת int*.

גבול ההסקה

כתבו שלוש קריאות ל־smaller: שני intים, שני doubleים וארגומנטים מטיפוסים שונים. הפרידו את הקריאה שאמורה להידחות לקובץ בדיקה שלילי. הסבירו מה משתנה כשמציינים את T במפורש, ואיזו המרה מתבצעת כתוצאה מכך.