Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Enum как параметр функции


Автор: Rimch 17.1.2008, 13:49
Есть процедура
Код

void __fastcall TForm1::Image2MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)


из другой необходимо вызвать её с определенным параметром, в Delphi можно передать как множество в квадратных скобках, а в С++ ?

Код

Image2MouseMove(Sender,  [как передать ssLeft] , X,Y);

Автор: JackYF 17.1.2008, 13:51
Цитата(Rimch @  17.1.2008,  12:49 Найти цитируемый пост)
в С++

можно сделать так:
Код

TShiftState ss;
ss << ssLeft;
Image2MouseMove(Sender, ss, X,Y);


Добавлено через 59 секунд
как таковой конструкции "множества" в С++ нет.

Автор: Rimch 17.1.2008, 13:57
а как не создавая нового обьекта, так то я и сам знаю

Автор: Sharkfire 17.1.2008, 14:22
Не как поидее или создавай прямо при редедаче фактических параметров. 

Автор: artsb 17.1.2008, 16:16
Можно.
Вот:
Код

Image2MouseMove(Sender, TShiftState()<<ssLeft, X, Y);

Автор: Lazin 17.1.2008, 16:23
Цитата(JackYF @  17.1.2008,  13:51 Найти цитируемый пост)
как таковой конструкции "множества" в С++ нет. 

а как-же enum, разве это не множество))

Код

enum myEnum
{
  Item1 = 1,
  Item2 = 2
};

void myFunc(myEmum param)
{
  if (param == Item1)
   printf("Item1");
  else if (param == Item2)
    printf ("Item2");
}

эту ф-ю можно написать и по другому
Код

void myFunc(int param)
{
  if (param == Item1)
   printf("Item1");
  else if (param == Item2)
    printf ("Item2");
}

но в этом случае туда можно будет передать как одно из значение myEnum, так и неправильное значение

Автор: JackYF 17.1.2008, 16:50
Цитата(Lazin @  17.1.2008,  15:23 Найти цитируемый пост)
разве это не множество))

нет, enum - это не множество. Множество может содержать несколько "представителей" типа, и может не содержать ни одного.

Автор: Lazin 17.1.2008, 17:28
а std::set разве не множество?

Автор: JackYF 17.1.2008, 17:42
Цитата(Lazin @  17.1.2008,  16:28 Найти цитируемый пост)
а std::set разве не множество? 

это класс, а не элемент языка. Множество, конечно. Только ты ему не укажешь, что у там могут находиться только элементы 4..17 - только помещая туда собственный класс, который проверяет в конструкторе и операторе присваивания, чтобы не было элементов < 4 и > 17 smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)