Как написать реализацию массива отдельно от объявления?

Paul_it
Offline
Зарегистрирован: 25.06.2019

Здравствуйте. хочу написать свою библиотеку для семисегментного индикатора со сдвиговым регистром. Вроде что то пока придумываю и записываю. Возникла проблемка с массивом, не знаю как написать отдельно его объявление в классе Public в .h, и его реализацию в .cpp. Не знаю, может через 2 двоеточия как функцию?

код заголовочного файла(код реализации еще не писал):

#pragma once
#include <Arduino.h>

class seg {
public:
    seg(const int _latchPin, const int _dataPin, const int _clockPin);
    segprint(int number, int delayval);
private:
    byte inf[10];                //                     value array
    int latchPin;
    int dataPin;
    int clockPin;
    int latchgetter();//
    void latchsetter(const int _latchpin);//
    int datagetter();//
    void datasetter(const int _datapin);//              setters, getters and register write
    int clockgetter();//
    void clocksetter(const int _clockpin);//
    void registerWrite(int whichState);//
    int decfunc(int val);//
    int prim(int val);//                                             functions to sevensegment
    int hundreed(int val);//
};

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Дак вон же - описан массив в private. Что не работает?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Если массив принадлежит экземпляру, то у Вас всё уже написано. Больше ничего не надо. Пользуйтесь массивом на здоровье.

Или Вам нужен статический массив? Один на все экземпляры?

Paul_it
Offline
Зарегистрирован: 25.06.2019

Да, мне нужен статический, но такой чтобы в .cpp записать значения каждого элемента.

вот массив

byte inf[10] {
  0b11111100,
  0b01100000,
  0b11011010,
  0b11110010,
  0b01100110,
  0b10110110,
  0b10111110,
  0b11100000,
  0b11111110,
  0b11110110
};

 

Paul_it
Offline
Зарегистрирован: 25.06.2019

Надо в .cpp сразу же записать в него значения

mixail844
Offline
Зарегистрирован: 30.04.2012

при создании экземпляра класса , вызывается его конструктор , там можно и значения массиву присвоить ,или я что то не понимаю ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Вроде так (в .cpp, прямо в области глобалов): byte seg::inf[10] = { ...тут значения через запятую... };

Paul_it
Offline
Зарегистрирован: 25.06.2019

Спасибо! Отпишусь когда попробую!

Paul_it
Offline
Зарегистрирован: 25.06.2019

Все я понял как. Почитал про статические переменные и функции и понял как сделать. Но у меня вопрос. Нужно ли писать byte seg::inf[10] = {...} в .cpp файле? Вполне вероятно, что я туплю, пожалуйста, не обижайтесь.)

sadman41
Offline
Зарегистрирован: 19.10.2016

Нужно ли суп ещё солить... Кто же кроме повара знает - нужно или нет.