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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
stan98
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 24
#1

Как лучше сделать хранение ссылок на экземпляры класса? - C++

31.05.2013, 20:34. Просмотров 563. Ответов 2
Метки нет (Все метки)

есть необходимость зранить все созданные экземпляры класса
придумал сдделать это с помощью статического списка - ничего не вышло - ошибка линковки unresolved external symbol

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
class MyClass
{
   MyClass();
   ~MyClass;
 
   static std::list<MyClass*> list 
};
 
myClass::MyClass
{
    list.push_back(this);
}
 
MyClass::~MyClass
{
    std::list<MyClass*>::iterator it = list.begin();
    std::list<MyClass*>::iterator it_end = list.end();
 
    for(; it != it_end; ++it)
    {
        if ( (*it) == this )
        {
            MyClass::list.erase(it);
        }
    }
}
подскажите намекните как правильно реализовать такой функционал и почему так как я сделал неправильно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2013, 20:34     Как лучше сделать хранение ссылок на экземпляры класса?
Посмотрите здесь:

Как перебрать все экземпляры класса? - C++
Здравствуйте! Я начинающий программист..... может и не программист вовсе. Но мне необходимо сделать такую задачу. С классами начала...

Построить отрезок между двумя точками, определенными как экземпляры класса Point - C++
помогите пожалуйста. класс с координатами есть осталось построить отрезок между двумя точками, определенными как экземпляры класса...

Разные экземпляры класса ? - C++
Есть класс Visitor и в нем объявленна функция void visitor:: enterToPark(jurassicPark jp){ //Trying to enter to park at every...

Статический и динамический экземпляры класса - C++
В чем разница между статическим и динамическим экземплярами класса? Мои познания здесь скромны: 1) Разная инициализация. У меня есть...

Что лучше: расширить интерфейс класса или сделать публичным подкласс? - C++
Вопрос такой. Вот у меня есть устройство (class device ), у него есть регистры (class register) . Легче всего, по - моему, создать класс...

Вывод контейнера указателей на экземпляры абстрактного класса - C++
Добрый день. Задача требует описать абстрактный класс и несколько наследников этого класса. Затем, описать контейнер (list)...

Хранение ссылок на файловые потоки - C++
Добрый вечер. Столкнулся с ошибкой C2280 - невозможность использовать конструктор копирования для ifstream. Пытаюсь заполнить...

Swap для элементов контейнера указателей на экземпляры абстрактного класса - C++
Добрый вечер. Не могу осилить проблему: Описан абстрактный класс. Описаны наследники этого класса уже без абстрактности. Описан...

Почему все экземпляры класса в векторе имеют абсолютно одни и те же характеристики? - C++
Доброе время суток! Суть: Есть класс, в конструкторе которого некоторые переменные класса задаются рандомно. enum Sex {male,...

Методы класса, как лучше записывать - C++
#include &lt;iostream&gt; class variantOne { public: variantOne() { varOne = 0; } variantOne(int a) { varOne = a; } ~variantOne()...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
31.05.2013, 20:37     Как лучше сделать хранение ссылок на экземпляры класса? #2
stan98, Вы хотите у себя в классе хранить свой класс, который тоже будет хранить сам себя в себе?
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
31.05.2013, 22:50     Как лучше сделать хранение ссылок на экземпляры класса? #3
Цитата Сообщение от stan98 Посмотреть сообщение
подскажите намекните как правильно реализовать такой функционал и почему так как я сделал неправильно
Идея верная — статическое поле с перечнем указателей на все элементы. Вы просто забыли инициализировать это поле. Напишите где-нибудь в файле реализации строку std::list<MyClass*> MyClass::list; Это инициализирует статическую переменную, которая в определении класса просто объявляется (но не создаётся в программе).

И ещё, лучше использовать set для таких целей. Чуть быстрее будут находиться элементы.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru