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