נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: C++ תכנות תבניתי

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
פונקציה
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 April 2006 בשעה 00:56 | IP רשוּם
ציטוט פונקציה

בתכנות תבניתי, לאחר שהצהרתי וממשתי את הפונקציות,

איך מצהירים על המשתנה בתכנית הראשית?

חזרה לתחילת העמוד הצג את כרטיס החבר של פונקציה חפש הודעות אחרות של פונקציה בקר בדף הבית של פונקציה
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 30 April 2006 בשעה 02:53 | IP רשוּם
ציטוט אלצ'קו

השאלה לא ברורה. אתה יכול להראות לנו את הקוד שכבר כתבת?
חזרה לתחילת העמוד הצג את כרטיס החבר של אלצ'קו חפש הודעות אחרות של אלצ'קו
 
פונקציה
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 30 April 2006 בשעה 21:51 | IP רשוּם
ציטוט פונקציה

כבר הסתדרתי.

שאלה חדשה: איך שולחים משתנה מסוג תבניתי (template) לפונקציה בתכנית הראשית?

[הגדרתי משתנה מסוג Vector<int> num איך אני שולחת אותו לפונקציה?

תודה

חזרה לתחילת העמוד הצג את כרטיס החבר של פונקציה חפש הודעות אחרות של פונקציה בקר בדף הבית של פונקציה
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 01 May 2006 בשעה 00:14 | IP רשוּם
ציטוט אלצ'קו

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 01 May 2006 בשעה 18:09 | IP רשוּם
ציטוט פונקציה

זו התכנית למיזוג שני וקטורים.

איך אני פותרת את הבעיה בשליחת האיברים לפונקציה?

קוד:

#include <iostream>

#include <conio.h>

#include "Vector.h"

using namespace std;

template<class T>

Vector<T> MIZUG(Vector<int>&num ,Vector<float>&shever)//פונקציה למיזוג שני מערכים

{

int i=0;//miyun-מונה מערך ממויון

int j=0;//num מונה מערך

int k=0;//shever מונה מערך

while(i<18)

{if(num.getData(j)<shever.getData(k))

{mizug.Insert(num.getData(j));

i++;

j++;

}

else

{mizug.Insert(shever.getData(k));

i++;

k++;

}

if(k==11)

{while(j<7)

{mizug.Insert(num.getData(j));

i++;

j++;

}

}

else

{if(j==7)

{while(k<11)

{mizug.Insert(shever.getData(k));

i++;

k++;

}

}

}

}

return mizug;

}

void main()

{

Vector<int>num(7);

Vector<float>shever(11);

int i=0;

while(i<7)

{

num.Insert(i*3+7);

i++;

}

num.print();

cout<<endl;

i=0;

while(i<11)

{

shever.Insert(float(3.4+2.2*i));

i++;

}

shever.print();

Vector<float>mizug(18);

mizug=MIZUG(num,shever);

cout<<endl;

mizug.print();

getche();

}

 

זו ההערה שהמחשב כותב לאחר ביצוע הקומפילציה :

קוד:

MIZUG(Vector<T> [],Vector<float> [])' : could not deduce template argument for 'T'         [   ; with    [  T=int                

 

 

חזרה לתחילת העמוד הצג את כרטיס החבר של פונקציה חפש הודעות אחרות של פונקציה בקר בדף הבית של פונקציה
 
אלצ'קו
אחראי פורומים
אחראי פורומים
סמל אישי
ג2ר פ33תי

הצטרף / הצטרפה: 20 January 2006
משתמש: מנותק/ת
הודעות: 609
נשלח בתאריך: 01 May 2006 בשעה 21:24 | IP רשוּם
ציטוט אלצ'קו

כל הקוד בעייתי ולא מתקמפל. השגיאה הספציפית שאת מקבלת אומרת שאת מנסה להשתמש בתבנית בלי לציין טיפוס.

הפונקציה שלך היא כללית, ולא מוגדרת עבור טיפוס ספציפי. בקריאה לפונקציה את חייבת לכתוב:
קוד:
x=MIZUG<sometypename>(a,b);

חוץ מזה, הקוד לא מתקמפל כי את משתמשת בפונקציות שלא קיימות (אצלי אין print), מציינת פרמטרים לא נכונים (עבור insert, ב-i קטנה), משתמשת בטיפוסים לא קיימים (vector ב-v קטנה), וכו'. אני מופתע שזו השגיאה היחידה שאת מקבלת.

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 01 May 2006 בשעה 23:42 | IP רשוּם
ציטוט פונקציה

אלאצ'קו כתב:

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

אבל זוהי כן פונקצהי תבניתית ישנן פונקציות של print ו Insert שמוגדרות כראוי(!) בקובץ הצהרות ומימוש. זהו רק קובץ הmainו ואני מסתפקת במועט בכך שזו ההערה היחידה!

 

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

חזרה לתחילת העמוד הצג את כרטיס החבר של פונקציה חפש הודעות אחרות של פונקציה בקר בדף הבית של פונקציה
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה