Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 53

Vector ссылок на объекты класса

05.12.2016, 20:24. Показов 6157. Ответов 4

Студворк — интернет-сервис помощи студентам
У меня есть свой класс объекта. И при создании новых экземпляров данного объекта, мне нужно чтобы в vector заносилась ссылка на него (именно ссылка на экземпляр, а не создавалась его копия!), для того чтобы получать доступ к экземпляров, но без копирования всех объектов в динамический массив vector.

Пытался запустить такой код, но выдаёт ошибку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
70 main()
71 {
72         vector<Ranker> objects;
73         Ranker creature0;    // Создаём экземпляр класса "creature1"
74         objects.push_back(&creature0);
75         creature0.Hello();
76         return 0;
77 }
 
ERROR:
отсутствуют экземпляры перегруженная функция "std::vector<_Ty, _Alloc>::push_back [с _Ty=Ranker, _Alloc=std::allocator<Ranker>]", соответствующие списку аргументов.
СТРОКА 74

Добавлено через 1 минуту
P.S. Если строчку 74 заменить на эту, то всё работает, но тогда происходит копия всего экземпляра, что идёт в минус производительности.
C++
1
objects.push_back(creature0);
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2016, 20:24
Ответы с готовыми решениями:

Запись в массив объекты класса (vector)
// oop_laba2_2cpp: определяет точку входа для консольного приложения. //Вариант 6 //Объект – директория. // //Включает в себя ...

Как корректно скопировать vector в vector внутри класса
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

Написать шаблон класса на основе класса vector для реализации стековой структуры данных
Пыталась написать код, но не уверена будет ли такая реализация корректной, можно ли это сделать как-то по - другому? И как надо...

4
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
05.12.2016, 20:35
Надо делать вектор указателей, а не ссылок
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
05.12.2016, 20:37
C++
1
2
3
#include <functional>
//...
vector<std::reference_wrapper<Ranker>> objects;
http://en.cppreference.com/w/c... ce_wrapper
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
05.12.2016, 20:38
Лучший ответ Сообщение было отмечено buridan как решение

Решение

Цитата Сообщение от buridan Посмотреть сообщение
objects.push_back(&creature0);
Адрес копируешь, значит должен быть:
C++
1
vector<Ranker*> objects;
1
0 / 0 / 0
Регистрация: 05.12.2016
Сообщений: 53
05.12.2016, 21:30  [ТС]
Цитата Сообщение от nd2 Посмотреть сообщение
Адрес копируешь, значит должен быть:
C++
1
vector<Ranker*> objects;
Спасибо большое, действительно заработало с исправлением. Ошибку понял)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.12.2016, 21:30
Помогаю со студенческими работами здесь

Перебор ссылок на объекты
Здравствуйте, у меня имеется объект (корабль линкор). Перебираю с помощью for. Так как объект может быть уничтожен другим объектом, на его...

Перегрузка операции + с преобразованием объектов одного класса в объекты другого класса
Доброго времени суток! Изучаю ООП, при выполнении следующего задания возникли сложности: Создать класс Polar для хранения полярных...

Можно ли объявлять в описании одного класса объекты другого класса
Здравствуйте! Помогите, пожалуйста, разобраться: я описал класс SignalZakon, а теперь хочу создать объекты этого класса (k, T1 и Т2) в...

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся массив указателей на базовый абстрактный класс,...

QSet указателей на объекты класса, сортированный по полю класса
Здравствуйте. Возьмём тестовый класс: class TEST { public: TEST(); QString name; } Допустим у меня есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru