![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Litkevich Yuriy |
![]()
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
есть такой код:
h:
cpp:
т.е я инициализировал родительский класс некой константой, а тепрь мне понадобилось сделать конструктор который принимает некую переменную: h:
и в зависимости от того какой константе она равна, инициализировать родительский класс, как бы это сделать, как в теле конструктора, например, проинициализировать родителя? |
|
|
ViGOur |
![]()
Сообщение
#2
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
#define ?
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
в зависимости от переменной!
#define на этапе компиляции только. У меня родительский конструктор объявлен так: TableEditor(int type, QWidget *parent = 0), а дочернему передается строковая переменная. т.е. есть такая часть строки: : TableEditor(MY_CONST, parent) как ее засунуть в тело конструктора, чтоб получилось примерно такое:
но эта форма записи неправильная, как я понимаю. Есть ли иной способ инициализации родительского класса, кроме:
|
|
|
ViGOur |
![]()
Сообщение
#4
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Как вариант можно использовать шаблон:
|
|
|
ViGOur |
![]()
Сообщение
#5
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
Выбирай сам...
![]() Сообщение отредактировал ViGOur - 4.6.2008, 9:51 |
|
|
Andrew Selivanov |
![]()
Сообщение
#6
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 249 Регистрация: 9.10.2007 Из: Москва Пользователь №: 3 Спасибо сказали: 15 раз(а) Репутация: ![]() ![]() ![]() |
Мне кажется ты слишком заморачиваешься. Просто вынеси инициализацию из конструктора в метод TableEditor::Init(int type), вызывай его потом с нужным параметром...
|
|
|
Red Devil |
![]()
Сообщение
#7
|
![]() Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 6.6.2008 Из: Saint-Petersburg Пользователь №: 194 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
Если не слишком много возможных вариаций - то можно через тернарный оператор
Тернарные операторы можно соединить, т.е. сделать цепочку из них как и в switch, но только все будет утыкано в ? и : - и разобратся будет сложновато в будующем, т.к. читабельность будет не очень хорошая. Но работать все будет, так как нужно. Сообщение отредактировал Red Devil - 8.6.2008, 17:42 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
а сам switch туда нельзя засунуть?
|
|
|
ViGOur |
![]()
Сообщение
#9
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
а сам switch туда нельзя засунуть? Можно, но только в макрос, примерно так:
|
|
|
Red Devil |
![]()
Сообщение
#10
|
![]() Студент ![]() Группа: Участник Сообщений: 68 Регистрация: 6.6.2008 Из: Saint-Petersburg Пользователь №: 194 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
ViGOur, это не будет компилироватся
![]() Litkevich Yuriy Цитата а сам switch туда нельзя засунуть? Насколько я знаю нет. Можно сделать фунцкию, которая будет возвращать значение.
Ну и красивше конечно сделать эту функцию методом класса TREditor или TableEditor, она тогда конечно статической должна будет быть. Сообщение отредактировал Red Devil - 8.6.2008, 20:24 |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 6.12.2023, 16:49 |