עבור לתוכן

סטטים בC++

Featured Replies

פורסם

היי,

מוחזרת לי השגיאה הבאה

Error	1	error C2065: 'maxGrade' : undeclared identifier

כאשר הקוד הוא:

.h

class Student{
private:
static int maxGrade;

public:
Student()
{}
static int getMaxGrade();
};

.cpp

#include "Student.h"

static int getMaxGrade()
{
return maxGrade;
}

ניסיתי להוסיף Student לפני הmaxGrade או לפני השם של הפונקציה אבל זה מחזיר לי שגיאה..

מה הבעיה?

תודה.

פורסם

יש לך שתי בעיות. קודם כל, כשאתה מצהיר (declare) על איבר סטטי במחלקה, עדיין צריך להגדיר (define) אותו איפשהו. בשביל זה אתה צריך להוסיף את השורה הבאה בקובץ ה-cpp שלך:

int Student::maxGrade;

הטעות השנייה שלך היא שכשאתה מממש מתודה של מחלקה (מה שבקובץ ה-cpp), אז אתה צריך לכלול את שם המחלקה בחתימה של המתודה - אחרת הקומפיילר לא יודע שהמתודה היא חלק מהמחלקה. כלומר, בקובץ ה-cpp אתה צריך לעשות:

int Student::getMaxGrade()
{
/// code goes here
}

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

פורסם
  • מחבר

תודה.

אבל מה עם STATIC בשורת ההגדרה של הפונקציה? מספיק להגיד שהיא STATIC ב.H ?

פורסם

כן. למעשה, להגדיר משהו כ-static מחוץ למחלקה יש משמעות שונה לחלוטין.

ארכיון

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

דיונים חדשים