Здравейте на всички, които четат
Самообучавам C++ от учебник.
...и ми бяха зададени сериозен брой въпроси, които имам проблеми с тълкуването, въпросите са:
4. Променете конструктора на Упражнение 3, така че да присвоява нов идентификационен номер при установяването на всяка променлива. ID номерът трябва да бъде изведен на екрана.
**Моля, обърнете внимание: Упражнение 3 просто добавяше конструктор на клас към структурата на класа - и основно задаваше всички частни променливи на класа на '0' в този добавен конструктор.
5. Добавете конструктори към класа на упражнение 4. Те трябва да извеждат ID номера, когато бъдат извикани.
6. Напишете конструктор, чийто аргумент е ID номер. Претоварете го с конструктора на (упражнение 5) и след това напишете основна програма, за да тествате този нов конструктор.
**Така че въпросите: 4 и 5 ме объркват, тъй като изглежда, че задават едни и същи въпроси (т.е. извеждат ID числата) и имам нужда от повече от един „конструктор“, за да направя това (получавам тази част).
**Въпрос 6 на практика ме моли да претоваря повече от едно декларирано копие на класа с идентификационен номер като аргумент!!!! Объркан съм, защото в моя учебник изрично се посочва, че не можете да имате аргумент за конструктор, когато имате масив от класове, декларирани в основната програма.
Така че, ако някой може да хвърли светлина върху тези въпроси и да изясни как ще продължат, ще оценя помощта. Оценявам, че може да съм изтълкувал въпросите погрешно, затова моля за помощ.
**Моля, обърнете внимание: Името на класа: „класна класна стая“ не е идеално, но е това, което копирах от въпроса за учебника!
**Моля, имайте предвид също, че отговорих (мисля!) на упражнение/въпрос 4, като добавих код, който е Id на всеки екземпляр на променливата на класа.
И съответният код, свързан с горните въпроси, е:
#include <iostream>
#include <cstdio>
using namespace std;
class classroom{
char name[25];
int student_id;
float grades[10];
float average;
int num_tests;
float letter_grade;
**static int next_student_id;**
public:
void enter_name_id(void);
void enter_grade(void);
void average_grades(void);
void letter_grades(void);
void output_name_id_grade(void);
classroom();
};
**int classroom::next_student_id=1;**
и конструктора:
classroom::classroom(){
int i;
num_tests=0;
**student_id=next_student_id++;**
**cout<<"\nstudent id: "<<student_id;**
average=0.0;
for(i=0;i<10;i++){
grades[i]=0.0;
}
for(i=0;i<27;i++){
name[i]='-';
}
cout<<"\n*****************Finished*****************";
}
И основната декларация на програмата:
int main()
{
classroom students[3];
//and so on...
}
и кодът, добавен за въпрос/упражнение 4, беше:
в структурата на класа добавих следната частна членска променлива:
**static int next_student_id;**
и извън структурата на класа инициализирах статичната променлива на 1
int classroom::next_student_id=1;
и в конструктора добавих този код: който основно изведе на екрана уникален идентификатор за всеки екземпляр на променлива клас клас:
student_id=next_student_id++;
** cout<<"\nstudent id: "<
Many thanks in advance