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

Массив объектов с разными свойствами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Шифрование файла с использованием аттрактора Лоренца на C++ http://www.cyberforum.ru/cpp/thread1765962.html
Добрый вечер! Ни у кого случайно нет исходников такой программы? Срочно нужно! Программа должна использовать аттрактор лоренца для шифрования текстового файла
C++ CUDA OpenCV C++ фильтр Собеля Всем привет пишу прогу в C++( CUDA+ openCV) Задание звучало сл образом Напишите программу, в CUDA, в котором будет применять фильтр Собеля, рассчитанный с помощью графического процессора #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include "cuda_runtime.h" #include "device_launch_parameters.h" http://www.cyberforum.ru/cpp/thread1765746.html
C++ Поиск объектов с OpenCV
Здравствуйте, не подскажите как найти тёмные круги с помощью opencv std::vector<cv::Vec3f> circles; cv::HoughCircles(gray, circles, CV_HOUGH_GRADIENT, 1, 60, 200, 20, 0, 0); for (size_t i = 0; i < circles.size(); i++) { Point center(cvRound(circles), cvRound(circles)); int radius = cvRound(circles);
C++ Set на миллион элементов
Здравствуйте уважаемые программисты, подскажите пожалуйста. У меня в системе предположительное максимальное число элементов 1000000(больше наверное не будет). Элементы этой коллекции я генерирую сам, элемент представляет из себя массив целых больше нуля(snmp oid). Как я могу наиболее быстрым способом создать коллекцию , с минимальным количеством перестроения дерева.
C++ Реализовать программу, проверяющую цепочку действий на верность заданныму графом алгоритму http://www.cyberforum.ru/cpp/thread1762323.html
привет , в программировании я не бум-бум, и мне очень нужна ваша помощь в написании проги по графу для зачета! на каком языке она будет написана особого значения не имеет в этой программе должно быть поле для введения цепочки и кнопка "проверка", после нажатия которой должна проверяться введенная цепочка. После проверки должно выходить сообщение о правильности или неправильности введенной...
C++ Как написать плагин для Notepad++ Добрый день! Заранее извиняюсь, если создаю тему не в том разделе. Меня интересует как написать плагин для npp. Я читал руководство на английском, но я не очень силен в инглише. у кого-нибудь есть опыт разработки плагинов? Конкретно я хотел бы создать плагин автодополнения слов и конструкций - более удобный для меня чем стандартный. подробнее

Показать сообщение отдельно
beam
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 41

Массив объектов с разными свойствами - C++

19.06.2016, 00:28. Просмотров 236. Ответов 9
Метки (Все метки)

Всем доброго дня!
На мк (stm32) у входов есть разные возможности.
Для меня интересны:
  1. Discrete
  2. Analog
  3. Frequency
  4. Counter
Не все входы обладают этими возможностями. Всего 24 входа. В моем случае только 4 могут считать кол-во импульсов и частоту. Я хочу создать общий класс для входов, в котором будет реализована защита по указанию типа входа. Сейчас у меня примерно так:
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace UcSystem
{   
    typedef enum class ChannelTypeT : byte // Определяет тип входа
    {
        Discrete,
        Analog,
        Frequency,
        Counter
    };
    
    typedef union ChannelData8T // Это вариант для хранения 1 байта
    {
        bool Discrete;
        byte Analog;
    };
 
    typedef union ChannelData16T // Тут для 12 бит ацп и счетчик/частота
    {
        bool Discrete;
        ushort Analog;
        ushort Frequency;
        ushort Count;
    };
    
    struct Channel8T // Здесь непосредственно весь канал в 1 байт
    {
        friend class Device; // Для доступа к isActive и к type - каналы могут быть не активны, настройка по условию
        ChannelData8T value;
        bool hasChanged;
        bool getActivity(){return isActive;};
    protected:
        bool isActive;
        ChannelTypeT type;
    };
 
    struct Channel16T // Тут в 2 байта
    {
        friend class Device;
        ChannelData16T value;
        bool hasChanged;
        bool getActivity(){return isActive;};
    protected:
        bool isActive;
        ChannelTypeT type;
    };
 
    class Device // класс устройства, в котором 24 канала
    {
    private:
        byte mGroup;
    public:
        Channel16T advancedInputChannel[4];// создаю для 4х каналов с частотой
        Channel8T inputChannel[20];// остальные обычные
        bool advancedInputChannelsNew,// флаги обновления данных в массивах
             inputChannelsNew;
 
        Device();
        void setGroup(byte value);
        byte getGroup();
        void setChannelActivity(byte channel, bool value);// тут активируется канал
        void setChannelType(byte channel, ChannelTypeT type);// тут указывается его тип
    };
}
 
...
Device own;
...
ushort temp = own.advancedInputChannel[0].value.Counter;// Так я читаю значение advanced канала
ushort tomp = own.inputChannel[4].value.Analog;// Так я читаю значение обычного канала
Я бы хотел объединить эти 2 массива структур, но так, что бы я не мог выбрать у каналов 4-23 (5-24) позиций Frequency и Counter, то есть:
C++
1
2
ushort temp = own.universalInputChannel[0].value.Counter;// Так я читаю значение счетчика
ushort temp = own.universalInputChannel[4].value.Counter;// Ошибка компиляции или что-нибудь такое...
И вопрос №2 - вы заметили, что есть возможность хранить значение каналов в 1 или 2 байтах. А есть ли возможность скомпоновать массив из 24 каналов, но не одного типа ChannelData**T. То есть к примеру 0-3 у меня будут 16 бит, а 4-23 8 бит, но все они будут в переменной Channel??T universalInputChannel[24];?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 05:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru