עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

הורשה ב CPP

Featured Replies

פורסם

שלום לכולם!

אני כותב תוכנית במסגרת הכנה למבחן ואני תקוע במשהו:

התוכנית כוללת BASE שנקרא CAR. הוא כולל PRIVATE:

INT - מס' רכב

CHAR * - צבע

CHAR - קטגוריה.

הבנים, הם בעצם סוגי רכבים (הונדה, אופל וכו') והוא כולל PRIVATE:

CHAR * - תת דגם (סיויק, אקודרד וכו').

CAR.H

---------

#ifndef _CAR_H
#define _CAR_H
#include <iostream>
using namespace std;

class Car
{
int IDcar;//5 digits
char * color;
char category;//a,b,c
public:
Car(int, char *, char);//ctor
Car();
Car(const Car &);//cctor
~Car();//dctor
int getIDcar();
char * getColor();
char getCategory();
void setIDcar(int);
void setColor(char*);
void setCategory(char);
virtual void print();
//virtual void setType(char*)=0;
};
#endif

כאשר הבונה ברירת המחדל נראה ככה:

Car::Car()
{
IDcar=12345;
color="white";
category='A';
}

הבן, HONDA נראה ככה:

#ifndef _HONDA_H
#define _HONDA_H
#include "car.h"
#include <iostream>
using namespace std;

class Honda:public Car
{
char * type;
public:
Honda(char*, int, char *, char);//ctor
Honda();//default ctor
Honda(const Honda &);//cctor
~Honda();//dctor
char * getType();
void setType(char *);
void print();
};
#endif

יש לי בעייה בבונה מעתיק CCTOR:

Honda::Honda(const Honda & sec)
{
type=sec.type;
Car(sec.getIDcar(),sec.getColor(),sec.getCategory());
}

הוא רושם לי:

error C2662: 'Car::getIDcar': cannot convert 'this' pointer from 'const Honda' to 'Car&'

חשוב לציין כי אם מורידים את ה CONST בהגדרה לו, הכל עובד תקין, למה זה קורה?

כמו כן, כרגע התווספה תקלה נוספת:

בעת הידור התוכנית רשום:

error c2471: cannot update program database...

fatal error C1083: cannot open database file...

זה קרה לי גם קודם (לפני שעה בערך), ופשוט העתקתי הכל לתוך פרוייקט חדש והכלהסתדר.

אני משתמש ב 9.0.21022.8 VS

תודה

פורסם

הבעיה שלך היא שאתה ניגש לאובייקט const (כי הכרזת const Honda& sec) ואתה מפעיל עליו מתודה לא const (אני מדבר על getIDcar).

על אובייקט const ניתן להפעיל רק מתודות const (שאינן משנות את האובייקט). תכריז על getIDcar כך:


public:
// ...
int getIDcar() const;
// ...

פורסם
  • מחבר

למרות שב getIDcar() אני לא משנה את האובייקט?

****עריכה: בדקתי וזה אכן עובד...*****

פורסם

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

פורסם
  • מחבר

אוקיי, תודה הבנתי.

משהו יודע משהו לגבי הבעייה נוספת?

כמו כן, כרגע התווספה תקלה נוספת:

בעת הידור התוכנית רשום:

error c2471: cannot update program database...

fatal error C1083: cannot open database file...

זה קרה לי גם קודם (לפני שעה בערך), ופשוט העתקתי הכל לתוך פרוייקט חדש והכלהסתדר.

אני משתמש ב 9.0.21022.8 VS

תודה

תודה רבה

פורסם

תמחוק את ה-pdb. אולי נגמר לך המקום? הוא בד"כ די גדול.

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.