Назначение указателя в C ++ (указатель на вектор) - PullRequest
3 голосов
/ 01 марта 2011

Это мое первое сообщение на любом форуме, поэтому, пожалуйста, потерпите меня.

Я пишу программу на C ++, которая использует собственный класс 'Book' с переменными-членами, такими как title, author и другими переменными, которые хранятся в строках. Среди этих переменных-членов есть вектор для хранения объектов типа Review (который является другим пользовательским классом). Теперь в моем файле драйвера (где находится main ()) необходимо получить доступ к этому вектору (вектору Reviews в каждом объекте Book) и внести в него изменения. Я понял, что мне нужно использовать указатель типа вектора (например. вектор pointerName ). Поэтому я добавил еще одну переменную-член в класс Books, которая является указателем. Проблема, с которой я сталкиваюсь, состоит в том, чтобы указать этот указатель на вектор. Где я могу сделать это назначение? Я пытался разыменовать его и указывать на вектор в конструкторе по умолчанию для объекта, но это приводит к сбою моей программы во время выполнения без исключения. Строка, которую я вставил в конструктор: * pointer = vector_of_reviews;

Я новичок в этом форуме и все еще учусь тому, как размещать здесь сообщения, поэтому, пожалуйста, потерпите меня, если я допустил ошибку в своем сообщении, или я был неясен или недостаточен в моей информации. Пожалуйста, дайте мне знать, если мне нужно написать или сказать что-нибудь еще, чтобы прояснить свою позицию.

Спасибо.

1 Ответ

6 голосов
/ 01 марта 2011

Чтобы назначить указатель для «указания на» экземпляр объекта, используйте pointer = &vector_of_reviews.

Оператор & получает адрес чего-либо, и именно это вы хотите назначить указателю.

*pointer = vector_of_reviews разыменовывает указатель (получает реальный объект, на который указывает).Скорее всего, это приведет к сбою, если указатель еще не инициализирован.Если бы указатель был действителен, он бы выполнял присваивание значения, т.е.вызовите оператор присваивания векторного класса.

...