Aşağıdaki iki benzer işleve sahip bir öğrenci sınıfına sahibim: Biri statik ve bir değil.cpp-statik üyesi ve işlevi
int Student::maxGrade = 0;
int Student::getStudentMaxGrade()
{
return *max_element(grades.begin(), grades.end());
}
ben statik işlev nasıl emin değilim:
class Student
{
public:
Student(std::string name_ , int const id_);
virtual ~Student();
void addGrade(int const grade2add);//grade above 100
void removeGrade (int const grade2remove); //update maxGrade
void print(); //id, name, grades
int getStudentMaxGrade();
static int getMaxGrade();
private:
std::string name; //max 20 chars
int const id; //5 digits, only digits
std::vector<int> grades;
float avg;
static int maxGrade;
};
static int maxGrade
Ben işlevi uygulamak 0.
ile başlatmak olduğunu. Denedim:
int Student::getMaxGrade()
{
maxGrade= *max_element(grades.begin(), grades.end());
return maxGrade;
}
Ama (derleme değil)
'Ststic işlevini nasıl uygulayacağınızdan emin değilim. Bu, ne yapmak istediğinize bağlı değildir, bu da asla yeterince açıklanmadı. Statik bir öğenin belirli bir nesneye bağlı olmadığını hatırlayın (bu statikin tüm noktasıdır). Başka bir deyişle, herhangi bir bireysel öğrenciye atıfta bulunamaz. –
@Igor, bunun bir nesnenin belirli bir örneğine bağlı olmadığını kastediyorsunuz. Belli bir nesneye, yani “Öğrenci” ye bağlıdır. – Chiel
@Chiel 'Öğrenci 'bir sınıf değil, bir nesnedir. Eğer Öğrenci s 'varsa, 's' bir nesnedir; Öğrenci değil. –