Как обратиться к определенному объекту класса
Заполняется вектор, как можно потом обратиться к определенному объекту класса?
int main()
{
setlocale(LC_ALL, "");
srand(time(NULL));
std::vector<Book>::iterator ITER;
const int N = 3;
std::vector<Book> Arr(N);
for (ITER = Arr.begin(); ITER != Arr.end(); ++ITER)
{
std::cout << "Объем книги: " << ITER->getVolume() << " страниц" << std::endl;
std::cout << "Возрастные ограничения: " << ITER->getAgeRestrictions() << "+" << std::endl;
std::cout << "Оценка книги: " << ITER->getMarks() << "+" << std::endl; //убрать
std::cout << "Жанр книги: " << ITER->getGenre() << std::endl;
std::cout << "Название книги: " << ITER->getNameBook() << std::endl;
std::cout << "Автор книги: " << ITER->getAuthorBook() << std::endl;
std::cout << std::endl;
}
}
Ответы (2 шт):
Автор решения: Виктор
→ Ссылка
Вариант как можно реализовать без ITER:
class Book
{
public:
Book(int i){
field = i;
}
int getField() const
{
return field;
}
int field;
};
int main ()
{
const int N = 3;
std::vector<Book> Arr(N, Book(0));
Arr[0].field = 1;
Arr[1].field = 2;
Arr[2].field = 3;
for(const auto book: Arr)
{
cout << "Field: " << book.field << " " << book.getField() << endl;
}
return 0;
}
Вывод:
Field: 1 1
Field: 2 2
Field: 3 3
Автор решения: Harry
→ Ссылка
например, мне нужно получить информацию насчет второй книги
Если это вектор или дек — словом, с произвольным доступом — можно по индексу
Arr[2].getMarks()
В общем случае — через итератор:
auto it = std::next(Arr.begin(),1);
it->getMarks();