2016-10-13 5 views
-5

Я пытаюсь добавить один класс в массив до полного заполнения, тогда мне нужно возвратиться как истина.C++ добавление по одному до массива до полного

Пустота, что я использую = cpp.sh/9np2

Вот код

void GetGrades(StatsList* stats) 
{ 
    ListType grade = 0; 
    while (grade != -1) 
{ 
    cout << "Enter grade (-1 quits):"; 
    cin >> grade; 
    if (!cin) 
    { 
     cin.clear(); 
     cin.ignore(2000, '\n'); 
     cout << "Invalid number" << endl; 
    } 
    else if (grade >= MINGRADE && grade <= MAXGRADE) 
    {  
     if (!stats->NewGrade(grade)) 
     { 
      cout << grade << " not entered - grade list is full" << endl; 
     } 
    } 
    else 
    { 
     if (grade != -1) 
      cout << "Grade out of range" << endl; 
    } 

} 
} 

класс функций, которые я использую = cpp.sh/2jkz

bool StatsList::NewGrade(ListType grade) 
{ 
    int i = 0; 
    bool full = (List[6] == '\0'); 

    if (full){ 
     List[i] = grade; 
     i++; 
     cout << grade; 
} 
    return false; 
} 

Я устал AF, и я не могу понять, что Я делаю неправильно, помогите девушке. Я просто хочу понять, что я делаю неправильно, прежде чем лечь спать.

+0

Прошу прощения, впервые воспользовавшись этим сайтом, позвольте мне исправить ошибку –

+0

Пройдите [тур] (http://stackoverflow.com/tour). Затем [читайте о том, как задавать хорошие вопросы] (http://stackoverflow.com/help/how-to-ask). –

+0

Исправлено извините –

ответ

0

В bool StatsList::NewGrade(ListType grade) есть пара проблем.

  1. i необходимо сохранить от вызова к вызову, иначе он всегда будет установлен в 0 в начале функции. Я рекомендую дать более описательное имя, например listindex, и сделать его переменной-членом.
  2. Нет return true. Логическое место, чтобы положить его, похоже, находится в конце внутри тела if (full).

Слово на full. full действительно, если List есть нет полный. Неправда в этом наименовании будет вводить в заблуждение людей и приводить к ошибкам, введенным людьми, поддерживающими код в будущем. Я рекомендую изменить имя или изменить способ его использования. Изменение имени кажется более логичным для меня.

+0

Итак, я меняю i на listindex и делаю listindex отдельно от моего класса как общедоступной переменной? –

+0

Рекомендовать переменную 'private', потому что пользователям класса не требуется прямой доступ к индексу списка и может причинить ему большой вред. Например. 'obj.listindex = 100;' index теперь будет вне диапазона и поведение программы непредсказуемо. Если 'listindex' является приватным, такая ошибка вызовет ошибку компилятора. Общее эмпирическое правило делает все данные «частными» и разрешает ограниченный доступ через функции доступа, если у вас нет действительно, действительно, ** действительно ** веской причины. Более того, ключевое слово поиска - это «скрытие данных». – user4581301

 Смежные вопросы

  • Нет связанных вопросов^_^