![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
RazrFalcon |
![]()
Сообщение
#1
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Есть свой собственный класс, наследник от QObject.
Этот класс хранит инфо об одном файле. Классов создается столько, сколько файлов (через new).
Вопрос: как затем в коде программы получить список ВСЕХ MyClass? Кроме как через static_cast ничего в голову не приходит. Может есть другой, более правильный, метод? PS: название темы лучше придумать не смог... Сообщение отредактировал RazrFalcon - 27.8.2011, 10:24 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
RazrFalcon |
![]()
Сообщение
#3
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Тот метод что вы предложили, я использовал до этого. Но думал что есть другой метод.
Просто этот лист приходится делать глобальный. Я просто думал сделать через qobject_cast, но не пойму как найти все итемы одного класса через него. |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
сделай статический член класса MyClass - вектор указателей на экземпляры. В конструкторе myClasses добавляй туда элемент this, в деструкторе удаляй. Учитывай многопоточность. Учитывай переаллокацию списка при большом количестве создаваемых объектов (это не сложно - можно зарезервировать вызовом статической функции класса MyClass)
также учитывай, что если объекты MyClass будешь создавать в std::vector , то конструктор вызовется не для каждого элемента. К примеру
Сообщение отредактировал Алексей1153 - 27.8.2011, 18:16 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#5
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
RazrFalcon |
![]()
Сообщение
#6
|
![]() Zombie Mod ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1654 Регистрация: 24.5.2010 Из: Харьков Пользователь №: 1752 Спасибо сказали: 64 раз(а) Репутация: ![]() ![]() ![]() |
Ничего не понял
![]() std то тут причем =/ Юзаю QList - пока норм. |
|
|
Алексей1153 |
![]()
Сообщение
#7
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Отличная мысль! ну это, как бы, единственный возможный способ, насколько я понимаю. По сути - глобальная переменная с определённой областью видимостью RazrFalcon, это я подчеркнул особенность работы вектора. Насчёт поведения QVector - не проверял, QList же, скорее всего, вызывает конструкторы исправно |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Ничего не понял сделай статический член класса MyClass - вектор указателей на экземпляры. В конструкторе myClasses добавляй туда элемент this, в деструкторе удаляй. Заводишь статическую переменную в классе и статическую функцию чтения из неё:
Используешь так:
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 8.6.2025, 22:11 |