crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> класс-enum
RazrFalcon
  опции профиля:
сообщение 10.4.2012, 20:05
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Нужно перечисление констант, к примеру для колонок таблицы.
// создаю
class Column { public: enum {First, Second, Third};};
// использую
tableWidget->item(row, Column::First)

Вроде все верно, но может быть есть более красивое решение, и может быть текущее не очень верное.

PS: все такие классы-enum'ы для каждой таблицы хранятся в отдельном хедере, который я просто таскаю по другим классам.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 10.4.2012, 22:14
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

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




Репутация:   3  


Я бы define использовал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.4.2012, 7:23
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


да не, так нормально.

дефайны тут не нужны и вредны даже

можно ещё namespace

namespace MyEnums
{
  enum ee_columns
  {
    e_column_First, //
    e_column_Second, //
    e_column_Third, //
  };
}


Сообщение отредактировал Алексей1153 - 11.4.2012, 7:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 11.4.2012, 8:55
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Я обычно делаю так:

class UsersTable : public QAbstractTableModel
{
  public:
    enum Columns { IdColumn, NameColumn, AddressColumn };
     ...
};

class ProductsTable : public QAbstractTableModel
{
   public enum Columns { NameColumn, IdColumn, CountColumn };
  .....
};


...
...
...

usersTable->index( row, (int)UsersTable::IdColumn );

productsTable->index( row, (int)ProductsTable::IdColumn );


Преимущество в том, что для разных таблиц можно определить одинаковые названия полей.
Да UsersTable::IdColumn, ProductsTable::IdColumn мне кажется более читабельным
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.4.2012, 13:02
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


PAFOS, у него, похоже, нет переопределённого класса
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 12.4.2012, 8:00
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Ну и ладно) может кому пригодится и такой способ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.11.2024, 15:54