Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,100
#1

Параметры функции и их считывание - C++

13.07.2015, 06:08. Просмотров 257. Ответов 14
Метки нет (Все метки)

Здравствуйте! Подскажите, как такое реализовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
....
void ClassA::Init(что здесь должно быть? Enum?)
{
  if( Enum == 0)
  ....
  else if( Enum == 1)
  etc.....
}
.....
main.cpp
 
 
A->Init(ENUM1 | ENUM2);
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2015, 06:08     Параметры функции и их считывание
Посмотрите здесь:

Параметры функции - C++
Нужна помощь со строкой, где вызывается функция Min(38). А точнее с параметрами. Никогда не сталкивался с "? :". Какие параметры передает...

Параметры функции - C++
#include<iostream> using namespace std; void Write (int *, int); int main() { int array_size; cin >> array_size; ...

Параметры функции - C++
Как передать в функцию в качестве параметра масив ???

Параметры функции - C++
Читаю книгу увидел не понятные для меня параметры. int function(int ,int ,char s&); Объясните что это за параметры, и как с ними...

Параметры функции - C++
load(n,a);как называются эти параметры void load (int n,doble* a) а как называются эти?

функции и параметры - C++
есть фунция fun в которой аргументом является параметр p (должен передаваться из main), вычисляются в ней два значения f1 и f2. Как...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Renji
1821 / 1239 / 288
Регистрация: 05.06.2014
Сообщений: 3,541
13.07.2015, 06:23     Параметры функции и их считывание #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
switch(Enum)
{
case 0:
   ...
   break;
case 1:
   ...
   break;
...
default:
   ...
}
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
13.07.2015, 10:19     Параметры функции и их считывание #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class MyListBoxItem
{
public:
    enum State
    {
        None = 0,
        Ok = 1,
        Fail = 2
    };
 
        MyListBoxItem(State _value)
    {
        switch(_value)
                {
                 case None:
                        break;
                 case Ok:
                        break;
                 case Fail:
                        break;
                }
    }
}
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,100
13.07.2015, 14:19  [ТС]     Параметры функции и их считывание #4
sashatref
у меня не работает так:
C++
1
MyListBoxItem f(MyListBoxItem::State::None | MyListBoxItem::State::Ok);
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
13.07.2015, 14:42     Параметры функции и их считывание #5
Helldrg, отвлекли, забыл исправить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <conio.h>
 
enum State
{
    None = 1,
    Ok = 2,
    Fail = 4
};
 
State operator | (State a, State b)
{
    return static_cast<State>(static_cast<int>(a) | static_cast<int>(b));
}
 
class MyClass
{
public:
    MyClass(State _value)
    {
        if (_value & None)
        {
            std::cout << "None\n";
        }
        if (_value & Ok)
        {
            std::cout << "Ok\n";
        }
        if (_value & Fail)
        {
            std::cout << "Fail\n";
        }
    }
};
 
int main()
{
    MyClass((State)Fail);
    MyClass(Fail | None);
    MyClass(Fail | None | Ok);
 
 
    _getch();
    return 0;
}
Добавлено через 1 минуту
Я не сильно понимаю, почему если передаю один элемент, то его нужно приводить к типу enum, может кто более опытный подскажет?
C++
1
MyClass((State)Fail);
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,100
13.07.2015, 15:10  [ТС]     Параметры функции и их считывание #6
sashatref
Получается и в функциях winAPI перегрузкой операторов пользовались?
C++
1
2
3
4
5
6
7
8
 hwndList = CreateWindow (TEXT ("listbox"), NULL,
                              WS_CHILD | WS_VISIBLE | LBS_STANDARD,
                              cxChar, cyChar * 3,
                              cxChar * 16 + GetSystemMetrics (SM_CXVSCROLL),
                              cyChar * 5,
                              hwnd, (HMENU) ID_LIST,
                              (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE),
                              NULL) ;
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
13.07.2015, 15:22     Параметры функции и их считывание #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Helldrg, там скорее всего вообще сделано по типу:
C++
1
2
3
#define WS_CHILD 0x1
#define WS_VISIBLE 0x2
#define LBS_STANDARD 0x4
тогда не нужно ничего перегружать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
MyClass(int _value)
    {
        if (_value & WS_CHILD)
        {
            std::cout << "WS_CHILD\n";
        }
        if (_value & WS_VISIBLE)
        {
            std::cout << "WS_VISIBLE\n";
        }
        if (_value & LBS_STANDARD)
        {
            std::cout << "LBS_STANDARD\n";
        }
    }
Helldrg
-15 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,100
13.07.2015, 15:36  [ТС]     Параметры функции и их считывание #8
sashatref
Спасибо большое! То что надо
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
13.07.2015, 15:38     Параметры функции и их считывание #9
Helldrg, главное помнить, что значение enum должны быть кратны степеням двойки, т.е :
C++
1
2
3
4
5
6
7
8
9
enum State
{
    Value1 = 1,
    Value2 = 2,
    Value3 = 4,
    Value4 = 8,
    Value5 = 16
//....
};
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,455
Завершенные тесты: 1
13.07.2015, 16:42     Параметры функции и их считывание #10
Цитата Сообщение от sashatref Посмотреть сообщение
главное помнить, что значение enum должны быть кратны степеням двойки
Бред.
C++
enum e{ some=33, someElse };
cout << someElse;
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
13.07.2015, 16:45     Параметры функции и их считывание #11
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Бред.
я имею ввиду, чтобы адекватно использовать флаги.
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,455
Завершенные тесты: 1
14.07.2015, 08:31     Параметры функции и их считывание #12
Цитата Сообщение от sashatref Посмотреть сообщение
я имею ввиду, чтобы адекватно использовать флаги.
Слово "адекватно" здесь неуместно. Если только "чтобы как-то похитрому использовать флаги".
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
14.07.2015, 08:39     Параметры функции и их считывание #13
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Слово "адекватно" здесь неуместно. Если только "чтобы как-то похитрому использовать флаги".
Тогда продемонстрируйте, как "адекватно" реализовать флаги на чистом c++?
SatanaXIII
Супер-модератор
Эксперт С++
5591 / 2625 / 239
Регистрация: 01.11.2011
Сообщений: 6,455
Завершенные тесты: 1
14.07.2015, 08:53     Параметры функции и их считывание #14
sashatref, пардоньте, с первого раза до меня не дошло, что речь идет про использование перечисления как флагов. Все правильно вы говорите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 09:01     Параметры функции и их считывание
Еще ссылки по теме:

Параметры функции по умолчанию - C++
Можно ли в качестве параметра по умолчанию указать элимент класса ? Хотелось бы сделать как то так char* SendMessage(char*...

Функции, параметры функций - C++
Определить функцию нахождения расстояния между точками. Во множестве точек на плоскости найти пару точек с минимальным расстоянием между...

Параметры функции fread - C++
Вот программа: _____________________ #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; using...

Функции и процедуры и их параметры - C++
#include &lt;iostream&gt; using namespace std; int main(int argc, char** argv) { class Human{ public: int Age,Hair; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Pancir
57 / 44 / 10
Регистрация: 16.09.2014
Сообщений: 124
14.07.2015, 09:01     Параметры функции и их считывание #15
Так задавать значения более удобно ИМХО.
А так же не стоит забывать о типах которые используются для хранения флагов, enum например 32 битный int (если не задано другое) и больше 32 флагов содержать не может.
C++
1
2
3
4
5
6
7
8
9
10
enum State
{
    Value0 = 1 << 0,
    Value1 = 1 << 1,
    Value2 = 1 << 2,
    Value3 = 1 << 3,
    Value4 = 1 << 4,
    /* ... */
    Value31 = 1 << 31,
};
Yandex
Объявления
14.07.2015, 09:01     Параметры функции и их считывание
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru