Cheshire cat

MoonLight25

New member
Cheshire cat

אני לומדת עכשיו C++ מהספר של Bruce Eckel ואני לא מבינה את ההסבר שלו ל-Cheshire cat. הבנתי שזאת טכניקה כדי לא לקמפל כל פעם מחדש את ה-header file אבל אני לא מבינה איך זה עובד. צירפתי קובץ txt עם הדוגמא מהספר הטכניקה לפי מה שהבנתי היא להכריז על struct בתוך ה-private של ה-class ואז להגדיר פוינטר לאותו struct. בספר כתוב שלאחר שמגדירים את זה ה-client programmer יוכל לראות רק את השורה : struct Cheshire אני לא מבינה מה זאת אומרת יוכל לראות רק את השורה הזאת??? באיזה קובץ הוא יראה רק את השורה הזאת? ואיך הטכניקה עובדת? אם מגדירים פוינטר ל-struct איך זה גורם זה גורם ל-struct להיות מוסתר ולמה לא צריך לקמפל כל פעם מחדש את ה-header file? תודה על העזרה, איילת.
 

ZehuShmi

New member
אם הבנתי נכון אז

קבצי ה HEADER בכל מקרה לא עוברים הידור ל קבצי OBJ , קבצי ה CPP עוברים הידור. ה CLIENT שלך מקבל את התכנה ללא קבצי ה CPP אבל עם קבצי ה HEADER וכך הוא יודע איזה פונקציות קיימות, וכיצד לקרוא להן וכדומה. אם תרצי להסתיר ממנו את הגדרת ה STRUCT אז את רק מכריזה ב CLASS את שם ה STRUCT ואז אחרי השורה הזו ניתן להשתמש בו כאילו הוא כבר הוגדר במלואו. אפשר למשל לכתוב בקובץ CPP שבו נמצאת MAIN את ה STRUCT למשל:
#include "chesire.h" struct Chesire { int data1; int data2; }; int main() { Chesire c1, c2; Handle h1; return 0; }​
זה דומה למצב ב C שבו אם קוראים לפונקציה אז היא חייבת להיות מוגדרת מעל השלב הזה בתכנית או שלחילופין הכותרת שלה מוכרזת בהתחלה.
 
למעלה