פורסם 2005 ביוני 1120 שנים האוביקט בקובץ טקסטוהנה הטעות שהוא כותב לי--------------------Configuration: meir - Win32 Debug--------------------Compiling...driver.cppE:\doc\meir\driver.cpp(12) : error C2629: unexpected 'class driver ('E:\doc\meir\driver.cpp(12) : error C2334: unexpected token(s) preceding '{'; skipping apparent function bodyError executing cl.exe.driver.obj - 2 error(s), 0 warning(s)[attachment deleted by admin]
פורסם 2005 ביוני 1120 שנים מחבר הקוד בקובץ טקסטמה לא מובןהנה הוא במכה יש בעיה אבל עם העיברית אז אל תשימו לב#include <conio.h>class driver // äâãøä ùì äîçì÷ä ðäâ{ protected: // àæåø îåâï , ø÷ îçì÷åú éåøùåú éëåìåú ìâùú àìéå char name[30]; // ùí ðäâ, èéôåñ úååé int id; // îñ' ðäâ, ùìí int selphone; // îñ èìôåï public: driver (char[] name , int id , int selphone)// ÷åðñèø÷èåø ðäâ { driver::name = name ; driver::id = id; driver::selphone = selphone; } driver () // ÷åðñèø÷èåø ðäâ { driver::name = "meir" ; driver::id = 0; driver::selphone = 0; } char getName() // îçæéø ùí ðäâ { return name; } int getID() // îçæéø îñ ðäâ { return id; } int getSelphone() //îçæéø èìôåï ðäâ { return selphone;}};
פורסם 2005 ביוני 1120 שנים תנסה במקום ה::driver לשים this->.ויש לך שם בעיה. אתה לא יכול לעשות = לNAME. אתה חייב להשתמש בstrcpy.לדוגמא:strcpy(this->name, name);כמו כן, אתה חייב להכיל את הספרייהstring.h.וב- getname אתה לא יכול להחזיר איך שאתה מחזיר עכשיו.ובCTOP התבלבלת קצת. אתה רצית לעשות char *name או char name[]?בגדול זה אותו דבר(אם מישהו יראה שרשמתי את זה כאן הוא יכעס מאוד).
פורסם 2005 ביוני 1120 שנים תנסה במקום ה::driver לשים this->.ויש לך שם בעיה. אתה לא יכול לעשות = לNAME. אתה חייב להשתמש בstrcpy.לדוגמא:strcpy(this->name, name);כמו כן, אתה חייב להכיל את הספרייהstring.h.וב- getname אתה לא יכול להחזיר איך שאתה מחזיר עכשיו.ובCTOP התבלבלת קצת. אתה רצית לעשות char *name או char name[]?בגדול זה אותו דבר(אם מישהו יראה שרשמתי את זה כאן הוא יכעס מאוד).נראה לי שאתה מתבלבל עם PHP לגבי הקטע עם ה<- בCPP האופרטור הזה משמש כאשר משתמשים במצביע לאובייקט.לגבי מה שאמרת על ה* וה[] - כעקרון יותר יפה לכתוב * אבל זה לא משנה כי הקומפיילר מתרגם את ה[] ל*.ולכותב ההודעה - פלאפון באנגלית כותבים כך cellphone ולא selphone. כמו כן, טעות נפוצה לשמור טלפון\פלאפון במשתנה מסוג int, הכי טוב זה במחרוזת.הנה הקוד המתוקן למחלקה שלך:#include <string.h>class driver { private: char name[30]; char cellphone[10]; int id; public: driver(char* _name , int _id , char* _cellphone) { strcpy(name,_name); id = _id; strcpy(cellphone,_cellphone); } driver() { strcpy(name,"Meir"); id = 0; strcpy(cellphone,"0"); } char* getName(); int getID(); char* getCellphone();};char* driver::getName() { return name; }int driver::getID(){ return id; }char* driver::getCellphone(){ return cellphone;}
פורסם 2005 ביוני 1120 שנים המצביע this קיים גם בC++, והוא מצביע לאובייקט שאתה קראת למתודה שלו, בתוך המתודה עצמה.עריכה: במקום ליצור מחלקה, אתה יכול ליצור STRUCT בC, ולשלוח לפונ מסויימות מצביע לסוג הSTRUCT שלך, וזה בעצם אותו דבר.
פורסם 2005 ביוני 1220 שנים זה שזה קיים עדיין לא אומר שצריך להשתמש בו.לגבי מה שאמרת על הstruct - כן, זה כביכול שאתה כותב מחלקה אז הקומפיילר מתרגם את זה ל this-> בכל מקום שיש קריאה.
פורסם 2005 ביוני 1220 שנים ברור שצריך להשתמש במצביע this גם כדי שאם משהו יקרא את התוכנית אחר כך יהיה לו ברור למי שייכים משתנים ומי מפעיל מתודות, וגם אם למשל כותבים אופרטור = או כל אופרטור דומה כדי לאפר שרשור של פעולות צריך להחזיר בסוף this*
פורסם 2005 ביוני 1220 שנים עריכה: במקום ליצור מחלקה, אתה יכול ליצור STRUCT בC, ולשלוח לפונ מסויימות מצביע לסוג הSTRUCT שלך, וזה בעצם אותו דבר.וגם אפשר לכתוב הכל באסמבלי.אבל זה יהיה טיפשי.אם כבר נותנים לנו קלאסים ב-C++, אז למה להשתמש בשיטות המיושנות?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.