Форум программистов, компьютерный форум CyberForum.ru

Как можно записывать в вектор типа классса? - C++

Восстановить пароль Регистрация
 
bekabot
1 / 1 / 0
Регистрация: 18.12.2013
Сообщений: 61
09.02.2014, 11:29     Как можно записывать в вектор типа классса? #1
к примеру есть класс Homeworlist, в котором есть вектор list.
C++
1
vector<Homework> list;
теперь мне нужно записывать в вектор информацию, каждый раз, когда вызывается следующая функция:
C++
1
2
3
4
5
6
7
8
9
void Homeworklist::Add(Homework h)
{
 
    if (a>=50) cout << "No";
    cin >> list[0].HomeworkName >> list[0].Assigned_Date_1 >> list[0].GetDue_Date_1;
    list.push_back(h);
    a++;
    
}
Операторы я уверен, что описал правильно, программа компилируется, но когда вызываю функцию, выходит надпись "Vector subscript out of range". Как можно исправить? Также по заданию нельзя добавлять в вектор если его его размер превышает 50. Помогите пожалуйста. Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 11:29     Как можно записывать в вектор типа классса?
Посмотрите здесь:

C++ как вызвать метод из указателя на вектор пользовательского типа
Сведения о машине можно считывать/записывать в файл C++
как можно сгруппировать по 8 элементов вектора, чтобы записывать в файл C++
C++ Как разбить вектор на части(то есть вектора того же типа)
Как правильно записывать в динамический массив типа класса обьекты? вот банальный пример C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
09.02.2014, 11:34     Как можно записывать в вектор типа классса? #2
Обращение к нулевому элементу вектора, который, скорее всего, пуст.
И затем push_back непонятно чего.
Читайте в переменную, ее добавляйте в вектор.
zss
Модератор
Эксперт С++
 Аватар для zss
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 1
09.02.2014, 11:39     Как можно записывать в вектор типа классса? #3
А часом не это имелось ввиду:
C++
1
2
3
4
5
6
7
8
9
10
11
12
void Homeworklist::Add(Homework h)
{
 
    if (a>=50) cout << "No";
    else
    {
       cin >>h.HomeworkName >>h.Assigned_Date_1 >>h.GetDue_Date_1;
       list.push_back(h);
       a++;
    }
    
}
Добавлено через 2 минуты
Но в этом случае параметр функции передавать незачем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void Homeworklist::Add()
{
 
    if (a>=50) cout << "No";
    else
    {
       Homework h;
       cin >>h.HomeworkName >>h.Assigned_Date_1 >>h.GetDue_Date_1;
       list.push_back(h);
       a++;
    }
    
}
bekabot
1 / 1 / 0
Регистрация: 18.12.2013
Сообщений: 61
09.02.2014, 11:40  [ТС]     Как можно записывать в вектор типа классса? #4
Цитата Сообщение от zss Посмотреть сообщение
А часом не это имелось ввиду:
блин, тупая ошибка, а я ломал голову, спасибо большое!
Yandex
Объявления
09.02.2014, 11:40     Как можно записывать в вектор типа классса?
Ответ Создать тему
Опции темы

Текущее время: 12:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru