פורסם 2006 באפריל 3019 שנים איך שולחים משתנה מסוג template לפונקציה בתכנית הראשית?????לדוגמא הגדרתי משתנה Vector <int> num איך אני שולחת אותו
פורסם 2006 באפריל 3019 שנים בידיוק כמו במחלקות - את רושמת template <class T> לפני הפונ', ומשתמשת בסוג T כמו כל סוג רגיל.
פורסם 2006 באפריל 3019 שנים מחבר לא הבנתי. אני נמצאת עכשיו בתכנית הראשית. יש לי שני מערכים מהסוג Vector <int >num ואני צריכה לשלוח אותם לפוקציה שתמזג בינהם. אם זה היה מערכים רגילים הייתי קוראת לפונקציה ( mizug(num1,num2 אבל עכשיו איך עושים??????? לא צריך מצביעים וכד'? לילה טוב.
פורסם 2006 באפריל 3019 שנים אולי תצהירי על המערכים הללו מחוץ לכל הפונקציות (עם ה INCLUDE שלפני הפונ' וה MAIN).ככה המערכים הללו יוגדרו ככלליים שלר שייכים לשום פונ' אני חייב גם לציין שאני לא ככ מתקדם ב C++ אז קחי את הדברים שלי באופן מוגבל, למרות שאת האופציה הספציפית הזאת ניסיתי.בהצלחה!
פורסם 2006 באפריל 3019 שנים vector<int> num1,num2;doSomeThings(num1);soSomeThings(num2);vector<int>num3 = merge(num1,num2);הקוד הזה יעבוד והוא תקין ב c++ (בהנחה והפונקציות מוגדרות). מה שעשיתי כאן זה לשלוח את הוקטורים (num1,num2) עצמם (כלומר by value), שליחה זו תפעיל את ה copy constructor של מחלקה וקטור וכן ה type (במקרה זה int) בגלל שלשניהם יש/לא צריך (בהתאמה) copy constructor את יכולה לשלוח את המשתנים כמו שכתבתי. בשורה האחרונה אני עושה השמה של ערך מוחזר (וקטור) לתוך ווקטור אחר, כאן מופעל assinment operator של וקטור (שקיים) ו copy constructor של הtype (שכאמר, עבור משץנה פרימיטיבי int לא קיים ואין בו צורך). לכן גם פעולה זו חוקית.ישנה עוד דרך והיא לשלוח פוינטר, ואז שליחת המשתנים היא by reference. במקרה כזה הטיפול הוא קצת שונה אבל בעקרון מאד דומה.vector<int>* num1,*num2;..........vector<int>* num3 = merge(num1,num2);ההבדלה יהיה בגישה למתודות של האובייקטים (הוקטורים) ובאיתחולם.אם קודם כתבתvector<int> num1(6);כעת תכתביvector<int>* num1 = new vector<int>(6);אם קודם כתבתnum1.at(i);כעת תכתביnum1->at(i)... טוב, אני מקווה שהרעיון מובן.מטי.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.