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

shared_ptr с потомками - C++

Восстановить пароль Регистрация
 
RussDragon
 Аватар для RussDragon
12 / 12 / 1
Регистрация: 08.04.2012
Сообщений: 81
24.01.2014, 21:03     shared_ptr с потомками #1
Добрый вечер, сейчас столкнулся с задачей хранить большие объемы динамически-выделенной памяти. Обычный массив Base* list[100] не подходит, т.к. ограничен размер. Структура в виде дерева тоже —*проходиться по всей иерархии достаточно долго. Остановился на vector<shared_ptr<Base*>> list.

Проблема в том, что нужно как-то изменять значения (то, на что указывают) этих самых shared_ptr'ов во время выполнения программы на объекты производных классов. Гуглил такую проблему, ничего толком не нашел.

Каким образом можно реализовать?

Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 21:03     shared_ptr с потомками
Посмотрите здесь:

Дерево с двумя потомками с данными в конечных вершинах C++
Связь между потомками класса C++
C++ shared_ptr и vector
наследование от shared_ptr C++
shared_ptr валится C++
C++ Shared_ptr
C++ Шаблонный класс shared_ptr
Weak_ptr и shared_ptr C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.01.2014, 21:15     shared_ptr с потомками #2
А в чем, собственно, проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <memory>
#include <vector>
 
struct A {
    virtual void f() {
        std::cout << "A::f()" << std::endl;
    }
};
 
struct B: public A {
    virtual void f() {
        std::cout << "B::f()" << std::endl;
    }
};
 
int main()
{
    std::vector<std::shared_ptr<A>> v;
 
    v.push_back(std::make_shared<A>());
 
    v.front()->f();
 
    v[0] = std::make_shared<B>();
 
    v.front()->f();
}
RussDragon
 Аватар для RussDragon
12 / 12 / 1
Регистрация: 08.04.2012
Сообщений: 81
24.01.2014, 21:21  [ТС]     shared_ptr с потомками #3
Хм, неожиданно. Спасибо!
Yandex
Объявления
24.01.2014, 21:21     shared_ptr с потомками
Ответ Создать тему
Опции темы

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