Как написать класс с данными членами и функцией-членом C ++ - PullRequest
0 голосов
/ 14 октября 2011

Привет, ребята, я хотел бы, чтобы вы помогли мне в моем задании. Я пытался решить его, но есть некоторые вещи, которые заставляют меня: s Я знаю, как создать имя и идентификатор

Имя строки; int Id;

bt wt означает указатель на динамически распределенный массив классов: s: s: S? я просто знаю, как объявить указатель, как: двойной * оценки;

вот назначение ......

Создайте класс StudentGrades со следующими членами Data:

  • Имя: тип String
  • Id: введите целое число
  • Оценки: указатель на динамически распределенный массив Оценок. Тип: указатель на double (* double)

Включает следующие функции-члены:

  • Конструктор без аргументов
  • Конструктор, который принимает два аргумента: строку и целое число и инициализирует имя строкой, а идентификатор - целое число.
  • Установить и получить функции для имени, ID
  • Функция печати для информации о студентах. Он печатает имя, идентификатор и оценки.
  • перегруженный оператор присваивания объектов класса
  • Конструктор копирования объектов класса
  • Используйте синтаксис для конструктора копирования и перегруженного оператора присваивания.

В другом файле создайте программу на C ++, которая запрашивает у пользователя данные для создания четырех объектов класса StudentGrades. Первый объект (std1) имеет 5 оценок, второй (std2) имеет 6 оценок, а третий (std3) имеет 4 оценки, а четвертый (std4) не имеет оценок и данных. Затем скопируйте std2 в std4 и назначьте std1 для std3. Затем распечатайте детали четырех объектов

эй, я выполнил свое задание, но я пытаюсь его запустить, но это не работает. Может ли кто-нибудь, пожалуйста, скажите мне, в чем проблема в программе

#include <iostream>

using namespace std;

class student_grades{
private:
    string name,n;
    int Id,i;
    double* grades[];

public:
    student_grades();

    student_grades(sting, int);

    student_grades(const student_grades&);

    void set(string name,int Id){
        cout << "enter the name and the ID";
        cin >> n >> i;
        n = name;
        i = Id;
    }

    void get(){
        return i;
        return n;
    }

    void student_grades (student_grades&opr){
        name = name.opr;
        Id = Id.opr;
        grades[] = grades[].opr;
    }

    void student_info(){
        cout << "the name of the student is:" << name;
        cout << "the id for the srudent is:" << Id;
        grades = new double[];
        cout << "the grades of the student is:" << grades[] << endl;
        delete []grades;
    }

};

student_grades::student_grades() {}

student_grades::student_grades(string name, int Id) {
    name=" ";
    Id=0;
}

student_grades::student_grades(const student_grades& copy) {
    name=copy.name;
    Id=copy.Id;
}

int main() {

    student_grades std1;
    std1.set();
    cin >> std1.grades[5];
    std1.get();

    student_grades std2;
    std2.set();
    cin >> std2.grades[6];
    std2.get();

    student_grades std3;
    std3.set();
    cin >> std3.grades[4];
    std3.get();

    student_grades std4;
    std4.set();
    cin >> std4.grades[];
    std4.get();

    std1 = std3;
    std2 = std4;

    cout << std1 << std2 << std3 << std4;

    return 0;
}

1 Ответ

0 голосов
/ 14 октября 2011

Динамически размещенный массив - это массив, которому не присвоен определенный размер до времени выполнения, в отличие от объявления фиксированного массива во время компиляции. Объявление массива fixed выглядит следующим образом:

int grades[500];

Этот массив выделит память для 500 целых чисел и останется таким, пока вы не уничтожите его или не измените его размер.

Создание динамически размещенного массива будет выглядеть примерно так:

int* grades = NULL; // A declaration in your StudentGrades class
int n = <get size from somewhere>; // Makes the size "dynamic"
grades = new int[n]; // This definition could be in your StudentGrades ctor,
                     // with n being a parameter.

Затем вы можете продолжить, инициализируя все элементы массива равными 0, или заполните свой массив другими значениями по мере необходимости. Когда вы закончите с массивом, очистите его. Это может быть в вашем деструкторе:

delete [] grades;
grades = NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...