יצירת יחידת ספריה

sagiw

New member
יצירת יחידת ספריה

שלום, ברצוני ליצור קובת ספריה חדש(h) אשר בו יהיו מחלקות. כיצד אני בונה אותו? מה אני כותב בקובץ הראשי על מנת להוכל לקרוא ממנו ואיך אני קורא למחלקות שבו? תודה מראש
 
אולי.... הסבר מקדים:../images/Emo26.gif

קובץ ה-h הוא לא קובץ ספרייה - הוא מכיל רק את המנשק (ההגדרות/הצהרות) של הספרייה (פתח את אחד מהקבצי ה-h הסטנדרטים ותראה). במקרה שלך, קובץ ה-h יכיל רק את ההצהרות של המחלקות - והמימוש ייעשה בקובץ נפרד. עד כאן?...
 

annefan

New member
מנשק?

וגם לגבי החלוקה, לפעמים גם המימוש ימצא בקבצי ה-h, בעיקר כשאתה עובד עם templates.
 

VoodooKid

New member
המימוש של המחלקה

את המימוש אתה כותב בקובץ CPP רגיל אשר כל מתודה של המחלקה תיהיה ממומשת בו. הכותרות של המתודות יראו ככה ReturnType ClassName::MethodName(Parameters) ה :: נותן לפונקציה שכתבת שייכול CLASS המתאים. כי יכול להיות שתי פונקציות בעלות חתימה זהה במחלקות שנות. לפי דעתי זה שרשם מנשק התכוון לרשום ממשק שזה הצהרה של המחלקה עם כל המאפיינים והמתודות שלה. בקובץ המימוש אתה רושם בהתחלה #include "שם קובץ ההדר" זה יצא קצת הפוך מקווה שתבין. בקובץ הראשי של התוכנית אתה גם רושם את שורת ה INCLUDE. השורה הזו בעצם מייבאת את המחלקה שרשמת לפרוייקט שלך ומעכשיו אתה יכול להשתמש במחלקה.
 

DecayCell

New member
האמת היא שיש לומר "מנשק"

עוד אחת מהחלטותיה ההזויות של האקדמיה ללשון העברית.
 

selalerer

New member
לא איכפת לי מה האקדמיה ללשון

החליטה, תפסיקו לקרוא לזה "מנשק".
 

DecayCell

New member
גם לי לא ../images/Emo13.gif

פשוט ציינתי את העובדה (התמוהה) הזו.
 
"ממשק" בטח שלא...../images/Emo26.gif

אפשר בלועזית: interface... ואם בעברית - אז אפשר גם "מישק"... בכל מקרה "ממשק" לא קיימת... (לפחות לא בהקשר הזה) הצורה הנכונה היא "מנשק". אגב - זה גם המונח בו משתמשים הרוב המוחלט של המרצים וחוקרים אצלנו - אז כדאי להתחיל להתרגל...
 

selalerer

New member
אוריארד, תעזוב את המחשב וצא החוצה ל

חוף הים!!! המושגים שלך לגבי מה סקסי התעווטו מעט.
 

amfmalon

New member
איך בדיוק אני מציין את ה - header?

באילו מקומות אני שומר את הקבצים? ואילו include אני צריך בדיוק לרשום באילו מהקבצים?
 

selalerer

New member
דוגמא למחלקה:

The class definition: -------stupidclass.h file---------- class StupidClass { privat: int data; public: StupidClass(int data):data(data){}; void showData(); void setData(int data); int getData(); }; ----------------------------------- The class abstraction: --------StupidClass.cpp file------- #include <iostream> using namespace std; #include "StupidClass.h" void StupidClass::showData() { cout << data; } void StupidClass::setData(int data) { StupidClass::data=data; } int StupidClass::getData() { return data; } ----------------------------------- The class usage: -------main.cpp file--------------- #include <iostream> using namespace std; #include "StupidClass.h" int main(int argc,char *argv[]) { StupidClass sc1(4),sc2(2); cout << "sc1 data:" << sc1.getData() << endl; cout << "sc2 data:"; sc2.showData(); cout << endl; sc2.setData(6); cout << "sc2 data:" << sc2.getData() << endl; return 0; } -----------------------------------​
מחולק לשני קבצים, ממשק (כן, כן, בלי "נ"!!!) ומימוש ויש גם דוגמא לשימוש בקובץ ראשי, יש שאלות?
 

sagiw

New member
הוא אומר לי..

אחרי שעשיתי את הכל נאמר לי: undefined symbol{classname::function} in modol name.cpp למה זה קורה ואיך אני מטפל בזה? תודה מראש
 
למעלה