namespaces
 
הנושא האחרון שנרצה להתמקד בו הוא namespaces, כלומר נתינת שמות לחלקים בתוכנית.
לפני שנסביר כיצד משתמשים ב-namespaces, נסביר איזו בעיה נושא זה בא לפתור.
נניח שאתה כותב ספריה שתשמש מספר תוכניות. מטרת הספרייה היא ציור מפות. הגדרות הספרייה יכולות להראות כך:

void CollectGarbage();

int aGlobalVar;

class MyClass {
 /* MyClass definition... */
};
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

הפונקציה CollectGarbage, הכלולה בספרייה, תיקרא ע"י המשתמשים לצורך ביצוע עבודות ניקיון עבור מבנה הנתונים של הספרייה.
ובכן דבר זה תקין, כל עוד לאף משתמש אין פונקציה משלו בשם CollectGarbage, ואף משתמש גם לא משתמש בספרייה נוספת עם פונקציה בשם CollectGarbage.
ובכן, כיצד נוודא שלא נוצרות בעיות כתוצאה משמות זהים ?
בעיה זו פותרים בעזרת ה-namespaces.
השימוש הוא בצורה כזאת:

namespace drawMaps {

 void CollectGarbage();

 int aGlobalVar;

 class MyClass {
  /* MyClass definition... */
 };
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

במקרה זה, מיקמנו את הגדרות הספרייה בתחום השם drawMaps.
כעת, הנה דוגמא לשימוש בספרייה ללא namespace:

#include <drawMap.h>

void Sample()
{
 CollectGarbage();
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

כאן, ביצענו include לקובץ הספרייה, וקראנו לפונקציה CollectGarbage ע"י שימוש בשם הפונקציה בלבד. קוד זה יעבוד גם כאשר ההגדרות הוגדרו בתוך namespace וגם ללא.