Я наткнулся на класс, единственной целью которого было создание мигающих светодиодов. Он использовал класс для 2 объектов, у которых был разный интервал мигания. Я начал думать, как использовать константы, но мне ничего не пришло.
Можно ли использовать const int в сочетании с конструктором для использования разных констант для объектов?
Я в курсе. что const int должен быть инициализирован в том же месте, где он объявлен, поэтому я предполагаю, что ответ будет «нет»
Если нет, есть ли обходные пути для достижения того же? Это использование разных констант (что снижает использование памяти) для разных объектов одного типа.
Используемая платформа, о которой идет речь, - это IDE arduino и atmega328P. Может быть, компилятор распознает, что переменные фактически используются как константы, и рассматривает их как таковые?
.h
class BlinkingLed
{
private:
int blPin;
short blinkInterval; // <-- the contant
bool blinking;
bool ledOn;
long lastTime;
public:
BlinkingLed(int, int);
void setBlinkInterval(int); // never used, should not exist
int getBlinkInterval(); // never used, should not exist
void setLedOn(bool);
bool getLedOn();
void attachPin();
void heartBeat();
};
. cpp
BlinkingLed::BlinkingLed(int aPin, int aBlinkInterval) // constructor
{
blPin = aPin;
blinking = false;
ledOn = false;
blinkInterval = aBlinkInterval; // <-- the contant
}
Объекты создаются этой линией. Классу aki требуется 2 объекта BlinkingLed.
AKI aki(new BlinkingLed(23,333), new BlinkingLed(22,667), 24); // Red blinks 90/minute, green 45/minute
Это конструктор aki:
AKI::AKI(BlinkingLed *aRedLight, BlinkingLed *aGreenLight, int aBellPin)
{
redLight = aRedLight;
greenLight = aGreenLight;
bellPin = aBellPin;
}
333 и 367 хранятся в переменных, и я хочу, чтобы они стали константами для сохранения пространство памяти. Как мне это сделать?