עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

צריך עזרה בפקודות preprocessor ב-C++

Featured Replies

פורסם

אני בונה פרוייקט גדול עם 30 מחלקות בערך וכל מיני ירושות בינהן , ואין לי מושג איך למנוע multiple inclusion של קובצי header.

במיוחד נתקלתי בבעייה עם מחלקה A שמחזיקה פוינטר למחלקה B ו-B צריכה להפעיל מתודה של A .

הכללתי את ה-HEADER של B ב-A אבל בשביל ש-B תוכל להפעיל את המתודה של A אני צריך להכליל את

ה-HEADER של A ב-B אבל זה ייצור לי לולאת הכללות או משהו כזה.

איך מונעים את זה ?

תודה לעוזרים.

פורסם

קודם כל, כל HEADER אתה צריך "לעטוף" ב-

#ifndef _CLASSNAME_H_
#define _CLASSNAME_H_


#endif

שים לב שאתה לא רושם את הקוד בתוך קובץ הH, אלא בקובץ נפרד(קובץ CPPעושה INCLUDE לקובץ הH).

ואתה יכול להצהיר על CLASS לפני שאתה מגדיר אותו:


class ClassName;

פורסם
  • מחבר

דבר ראשון תודה

שנית, בקובץ הHEADER שלי אני מכליל עוד כמה HEADER-ים

איפה אני שם אותם ? אחדי ה- define _CLASSNAME_H# ?

פורסם

כן.

אם אתה רוצה, תחפש XIMPL או PIMPL.

פורסם

לטכניקה של מניעת #include חוזר ע"י ה-preprocessor קוראים "include guards". אין שום פרוייקט רציני ב-C או ב-C++ שלא מחייב אותם. שים אותם בכל קובץ H שאתה יוצר, גם אם לא נראה לך שאתה צריך.

זה מצביע לעבר אחד החורים ב-C ו-C++: השפות הללו מסתמכות במידה רבה מאוד על #include-ים טקסטואלים של קבצים רבים בזמן קומפילציה.

פורסם
  • מחבר

תבורכו אנשים :xyxthumbs:

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.