עבור לתוכן

עבודה עם טמפלט וקבצים בC++

Featured Replies

פורסם
  • מחבר

אני לא מצליח להבין את הREAD הזה.

אני מנסה לקרוא שורה. ממה שראיתי באינטרנט עושים את זה ככה:

CFILE

T Read() const throw(CError)
{
T obj;

if(_file.is_open())
{
_file >> obj;
if(_file.fail())
{
throw CError("error while reading file.");
}
}
else
{
throw CError("error file not open.");
}

return obj;
}

CELEMENT

const fstream& operator>>(const fstream& in, CElement& a)
{
char line[256];

in.getline(line,256,'\n');
a._number = atoi(line);

return in;
}

ואני מקבל את השגיאה הזו על השורה של GETLINE

Error	1	error C2663: 'std::basic_istream<_Elem,_Traits>::getline' : 2 overloads have no legal conversion for 'this' pointer

חשבתי שאולי זה הCHAR[] שאני שולח לGETLINE אבל ממה שאני מסתכל באינטרנט אנשים עושים ככה....

פורסם
  • מחבר

כי אם לא אני מקבל

Error	1	error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'const std::fstream' (or there is no acceptable conversion)

כשאני עושה את זה:

	friend fstream& operator>>(fstream& in, CElement& a);

ואם אני מנסה רק להגדיר את in כCONST הוא צועק לי:

Error	2	error C2440: 'return' : cannot convert from 'const std::fstream' to 'std::fstream &'

פורסם

לא מפתיע, כי ניסית לעשות את הפונקציה read גם כן const. למה בכלל משהו אצלך הוא const?

פורסם
  • מחבר

כי אני לא משנה שום אובייקט של CELEMENT.

אני רק קורא מהקובץ לא כותב אליו..

פורסם

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

פורסם
  • מחבר

כשאני עושה CONST על פונקציה אני צריך לחשוב גם על הפרמטרים שמועברים אלי או רק על הMEMBERS של המחלקה?

פורסם

רק על איברי המחלקה. הרי לפרמטרים אתה יכול לקבוע עבור כל אחד בנפרד אם להעביר אותו כ-const או לא.

פורסם
  • מחבר

תודה על כל העזרה!

ארכיון

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

דיונים חדשים