עבור לתוכן

OVERLOAD ל CIN ו COUT?

Featured Replies

פורסם

אז כך יש לי CLASS בשם LONGNUMBER. אני רוצה שניתן יהיה לעשות לו CIN וCOUT

אז איך אני יכול לגרום למתודות PRINT ו SET לעבוד עם COUT? אני לא גאון גדול אז אם אפשר דוגמה של איך זה יראה אני נורא אודה לכם.

א ו חידה

יש לכם פונקציה

print(int a,int b,const * char w)
{printf(w,a,b);}

איך לגרום לפונקציה להדפיס רק את B (בלי לערוך את הפונקציה כמובן)

פורסם

אתה לא מתאר את הבעיה נכון. cin ו- cout הם אובייקטים. אתה עושה overload לאופרטורים >> ו- <<.

אם תחפש קצת בפורום הזה תמצא לפחות 5 פעמים שאנשים שאלו את זה וענו להם. (מספיק שתחפש "ostream")

פורסם

כמובן, חיפוש קצר באינטרנט היה מביא כמה עשרות של תשובות לשאלה הזו. אבל אם לא טורחים להפעיל גוגל, למה לטרוח לחפש בפורום?

בבקשה: http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.8

פורסם
  • מחבר

כן אבל קיוויתי למידע בעברית :\ יש לי חום וחתיכת כאב ראש.

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

error LNK2019: unresolved external symbol "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class LongNumber const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVLongNumber@@@Z) referenced in function _main

ostream &operator<<(ostream &stream,LongNumber iNumber)
{
iNumber.print();
return stream;
}

int LongNumber::print()
{
ULContainer::const_iterator IT1=mNumber.end();
ULContainer ULTMP;
cout << "***UL_START***" << endl;
do
//runs
{
--IT1;
cout << (*IT1) << endl;

}while(IT1 != mNumber.begin() );

cout << "****UL_END****" << endl;
return 1;
}

class LongNumber{
ULContainer mNumber;
public:
LongNumber();
LongNumber(const LongNumber &);
int plus_equall(const LongNumber & iNumber);
int plus_equall(const long & iNumber);
int plus_equall(const char * iString);
int sub(const LongNumber & iNumber);
int mul(const LongNumber & iNumber);
int print();
int set(const char * iString);
int set(const long & iNumber);
int set(const LongNumber & iNumber);
int compBig(const LongNumber & iNumber);
int compSmall(const LongNumber & iNumber);
int compEquall(const LongNumber & iNumber);

//Operator Over Loading

friend ostream &operator<<(ostream &stream,LongNumber iNumber);

LongNumber & operator=(const LongNumber & iNumber);
LongNumber & operator=(const long & iNumber);
LongNumber & operator=(const char * iString);



LongNumber & operator+=(const LongNumber & iNumber);
LongNumber & operator+=(const long & iNumber);
LongNumber & operator+=(const char * iString);

LongNumber & LongNumber::operator++();


};

פורסם
  • מחבר

// stack_stack.cpp
// compile with: /EHsc


#include <iostream>
#include <conio.h>
#include <limits>
#include <time.h>
#include "LongNumber.h"


int main( )
{
LongNumber a,b;
a="111111111222222222333333333";
b=1;
a+=b;
cout << a;
cout << "Numbers are equall?: " << a.compEquall(b) << endl;
_getwch();
return 1;
}

א והאם מישהו מכיר אולי תכנה ש תאפשר לי לנהל בנוחות גרסאות שונות של הפרוייקט? אני משתמש ב MVCPP2005EXPRESS :jump:

פורסם

במקום

ostream &operator<<(ostream &stream,LongNumber iNumber)

צריך להיות

ostream &operator<<(ostream &stream,const LongNumber& iNumber)

נ.ב. המימוש לפונקציה הזו בכלל לא קרוב להיות נכון מבחינה תכנותית. אתה צריך להשתמש באובייקט ostream שאתה מקבל ולא לקרוא לפונקציה אחרת שעושה output לאובייקט קבוע (cout).

פורסם

מה שאתה יכול לעשות (אם אתה מתעקש) זה לדאוג שמתודת print תקבל ostream& כפרמטר.

כמו כן תקרא את http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.9

(ותיקח כדור נגד כאב ראש וחום).

פורסם

ד.א. אותו לינק נשלח כאן לפני יומיים ע"י זליג.

תריצו חיפוש אנשים.

פורסם

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

לדוגמא operator overloading. מילא אם היינו מדברים על הזמנים העתיקים (נניח 1995) כשלא היה אינטרנט ומנועי חיפוש והיית חייב לשאול שאלות. אבל היום!?

אנשים! אתם לומדים C++, אחת מהשפות הקשות והשטניות ביותר שנולדו לאנשות. אני גם מניח שגם שאתם הולכים להתעסק בעתיד בתכנות (קצת או הרבה, לא חשוב).

אם אתם מתעצלים לעשות דקה חיפוש בגוגל, אתם במקצוע הלא נכון.

אם אתם מפחדים מאנגלית, אתם במקצוע הלא נכון.

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

אבל! אם אתם לא מבינים בדיוק למה מתכוונים, או שיש לכם שאלה על משהו שניסיתם, או אז תיתנו לנו את הלינק או את הקוד והשגיאה וננסה לעזור (כמו שעשה nahum2 בהודעה השניה שלו).

(מצטער, הייתי חייב להוציא את זה מהמערכת שלי או שאני הייתי מתפוצץ...)

פורסם
  • מחבר

כמה פעמים אמרתי את הדברים הללו ממש.....

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

תודה רבה על כל העזרה אנשים.

ואם אני כבר כאן..

מישהו יודע אלגוריתם לחיסור שתי מספרים המיוצגים ע"י רשימה ביעילות גבוהה?

ואיך לעשות תיעוד נוח? ביצוג HTML או משהו?

[attachment deleted by admin]

פורסם

בשביל תיעוד נוח תבדוק את doxygen.

פורסם

אולי במקום לכתוב Class של מספרים גדולים משלך, תשתמש בחבילה סטנדרטית כגון GMP?

פורסם
  • מחבר

אולי אני גם פשוט אשלם למישהו לעשות לי את הפרויקט וזהו?

א ותודה ZELIG אבא שלי המשיך לחפש DOCYGEN..... ולא מצאנו...

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים