![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
ViGOur |
![]()
Сообщение
#1
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Есть классы:
Исходный код классов
|
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, начнём с того, что означает "правильно" - а что должна делать функция ? ) Может, она уже правильно работает ?
Допустим, под "правильно" имеется в виду определение значения PRPT_END в СТАТИЧЕСКОЙ функции
для переданного контекста (объекта класса CClassMessage или его потомка) Раскрывающийся текст тут вариантов несколько 1) "enum eProperties" всех классов заменить на мембер std::map<int> CClassMessage::m_props; и заполнить в конструкторе потомков 2) виртуальная функция CClassMessage::GetPropsCount 3) можно удариться в шаблоны, но тут лишнее |
|
|
ViGOur |
![]()
Сообщение
#3
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
В принципе вопрос правильный!
![]() Заменить enum на map не стоит, хотябы потому, что в каждом классе свои свойства, которые описываются в enum, к тому же как быт, если нужно обращение вроде: m_properties[PRPT_Name] ? Хардкодить - не по феншую... |
|
|
Алексей1153 |
![]()
Сообщение
#4
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, так в конструкторе каждого класса мап заполнится своими свойствами
если нужно обращение "m_properties[PRPT_Name]", то напишут "m_properties[PRPT_Name]" )) если нужно запретить изменение - вернуть константную ссылку на мап |
|
|
ViGOur |
![]()
Сообщение
#5
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
а ты проверь!
![]() |
|
|
Алексей1153 |
![]()
Сообщение
#6
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, не понял вопрос )
что именно нужно проверить ? |
|
|
ViGOur |
![]()
Сообщение
#7
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Ну а ты сделай по тем классам что описаны в первом посте примерно так:
и посмотри какие свойства будет у каждого объекта! ![]() |
|
|
lanz |
![]()
Сообщение
#8
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
![]() Раскрывающийся текст
|
|
|
AD |
![]()
Сообщение
#9
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
lanz |
![]()
Сообщение
#10
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Одного раза, на мой взгляд, достаточно! Это паттерн "паблик морозов" ![]() Ну и вообще иногда использую для логического разделения и чтобы не забываить что все еще паблик. Например конструкторы под своим пабликом потом интерфейс 1, потом второй и т.п. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 18:03 |