crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Litkevich Yuriy
  опции профиля:
сообщение 4.6.2008, 8:37
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


есть такой код:
h:
class TReditor : public TableEditor
{
public:
    TReditor(QWidget *parent = 0);
};

cpp:
TReditor::TReditor(QWidget *parent) : TableEditor(MY_CONST, parent)
{
...
}

т.е я инициализировал родительский класс некой константой, а тепрь мне понадобилось сделать конструктор который принимает некую переменную:
h:
class TReditor : public TableEditor
{
public:
    TReditor(const QString &tr_type, QWidget *parent = 0);
};

и в зависимости от того какой константе она равна, инициализировать родительский класс, как бы это сделать, как в теле конструктора, например, проинициализировать родителя?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Red Devil
  опции профиля:
сообщение 8.6.2008, 17:34
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 68
Регистрация: 6.6.2008
Из: Saint-Petersburg
Пользователь №: 194

Спасибо сказали: 1 раз(а)




Репутация:   3  


Если не слишком много возможных вариаций - то можно через тернарный оператор
TReditor::TReditor(const QString &tr_type, QWidget *parent) :
    TableEditor(tr_type == "MyType" ? MY_TYPE : CONST_TYPE, parent);

Тернарные операторы можно соединить, т.е. сделать цепочку из них как и в switch, но только все будет утыкано в ? и : - и разобратся будет сложновато в будующем, т.к. читабельность будет не очень хорошая. Но работать все будет, так как нужно.

Сообщение отредактировал Red Devil - 8.6.2008, 17:42
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.6.2025, 14:48