פורסם 2005 ביוני 1520 שנים שלום אני מנסה להגדיר את האופרטור הבא:שמוגדר בHEADER כך: friend bool operator<(Event &ev_l,Event &ev_r);ומימשתי אותו:bool operator<(Event &ev_l,Event &ev_r){ if ( ev_l.GetDate() == NULL ) //events with no date will be at begining of the vector. return true; if ( ev_r.GetDate() == NULL ) return false; if ( ev_l.GetDate()->GetYear() < ev_r.GetDate()->GetYear() ) return true; if ( ev_l.GetDate()->GetMonth() < ev_r.GetDate()->GetMonth() ) return true; if ( ev_l.GetDate()->GetDay() < ev_r.GetDate()->GetDay() ) return true; return false;}אבל הבעיה שהוא נותן לי את הודעת השגיאה הבאה ואין לי מושג מה לעשות איתה - אשמח לעזרהd:\program files\microsoft visual studio\vc98\include\algorithm(583) : error C2593: 'operator <' is ambiguous d:\program files\microsoft visual studio\vc98\include\algorithm(548) : see reference to function template instantiation 'void __cdecl std::_Unguarded_insert(class Event *,class Event)' being compiled
פורסם 2005 ביוני 1520 שנים בא לך לשתף מה השגיא או שאנחנו בקטע של ניחושים היום (אם כבר ניחושים אז נראה לי שה return type לא אמור להיות bool).מטי.
פורסם 2005 ביוני 1520 שנים תבדוק אם לא קיים לך עוד > אחד כזה, או שיש לך אחד דומה, שהשוני היחיד ביניהם הוא CASTING שעשית.
פורסם 2005 ביוני 1520 שנים מוזר.... כתבתי את זה :class a{public : int b;};bool operator<(a &a,a &b){ ;}int main(int argc, char* argv[]){;}ולי הוא לא נותן שגיאות...יכול להיות בגלל שאני עובד עם קומפיילר אחר (gcc), אבל לא נראה לי.מטי.
פורסם 2005 ביוני 1520 שנים אוקי כמה שאלות:מה זה הקלאס Event?זה קלאס שאתה הגדרת?איפה הצהרת על האופרטור בהדר? בתוך הקלאס או מחוץ לו?איפה אתה קורא לפונקציה הזו?
פורסם 2005 ביוני 1620 שנים למה אתה עושה את האופרטור כפונקציית friend ולא כחלק מהclass?מהודעת השגיעה אני אנחש שיש לך עוד אופרטור <, וגם שיש לך אפשרות לעשות casting מevent לטיפוס נתונים אחר כלשהו. בגלל זה הקומפיילר לא יודע באיזה אופרטור < להשתמש זה שאתה הגדרת כאן או זה שמתבצע לאחר cast של אחד מהארגומנטים.
פורסם 2005 ביוני 1620 שנים מחבר תודה רבה לכולכם!הקלס EVENTS זה אכן קלס שהגדרתי שיש INCLUDE להדר שלו כמובן.ההצהרה של האופרטור הינה בהדר והמימוש בCPP. ובתוך הקלס.אני קורא לפונקציה הזאת כאשר אני רוצה לעשות מיון SORT של <וקטור> אשר הינו מסוג EVENT, ולכן גם הוא לא מוגדר כחלק מהקלסס אלה כFRIEND כ צריך שוקטור יידע להשתמש בו.ניסיתי להעביר את המימוש לHEADER ולא לשים אותו בקלסס, והוא נתן לי הודעות שגיאה אחרות שלא קשורות לבעיה הנ"ל. האם אני יכול להניח שזה בסדר ושוקטור מכיר אותו? או שעכשיו בעצם זה לא נתן לי כלום?(מקווה שאני ברור איכשהו :-[) ושוב תודה
פורסם 2005 ביוני 1620 שנים אני לא זוכר את הפיתרון, אבל נראה לי שהבעיה היא שאתה משתמש ב- event שלך בתוך וקטור שבו כבר יש אופרטור השוואה מ- template והקומפיילר לא יודע אם להשתמש באופרטור של ה- template או זה שאתה כתבת.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.