![]() |
[בעיה] C++ (מחלקות ומרחבי שמות)
הערה מקדימה: אני עובד עם VC++ 2005.
ולבעיה: יצרתי מחלקה String, שהממשק שלה מצוי ב-string.h והמימוש ב-string.cpp, כאשר string.cpp כולל את string.h וכנ"ל main.cpp, שהוא קובץ התוכנית עצמה. כל הקבצים נמצאים באותה תיקייה. המחלקה משתמשת בטיפוס מוגדר (typedef), והבעיה היא שכאשר אני מגדיר את הטיפוס ב-string.cpp בלבד התוכנית לא עוברת הידור כי string.h לא מכיר את הטיפוס, והתוכנית עוברת הידור רק אם אני מגדיר את הטיפוס גם ב-main.cpp (הגדרת הטיפוס ב-string.h לא משפיעה כלל). אני לא רוצה להגדיר את הטיפוס בכל פעם שאני משתמש בספרייה. ובעיה נוספת: כאשר ניסיתי להכניס את ממשק המחלקה String שב-string.h למרחב שמות, והצהרתי ב-string.cpp שימוש במרחב שמות זה, התוכנית לא עברה הידור כי הפונקציות החברות של המחלקה String לא הורשו לגשת לאובייקטי String. תודה רבה מראש =]. |
אתה צריך להגדיר את הטיפוס בקובץ string.h...
ולא הבנתי כל כך את השאלה השניה... |
ציטוט:
|
לא משנה, הבעיה נפתרה - אפשר לנעול.
|
איך פתרת..?
|
שכחתי לכלול את iostream בstring.h (הייתי צריך מכיוון שהעמסתי את האופרטורים << ו->>) XD". טעות טיפשית קיצר.
בקשר למרחב שמות, עוד לא בדקתי אם זה נפתר בעזרת משו דעוד לא ניסיתי (ע"י הכנסת מימוש הפונקציות החברות למרחב השמות ולא ההצהרה שלהן כחברות בלבד) - אבל אני כבר לא צריך את זה. |
כל הזמנים הם GMT +2. הזמן כעת הוא 04:27. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ