Ошибка компиляции при попытке динамической установки вывода светодиода через конструктор классаC++

Программы на C++. Форум разработчиков
Anonymous
 Ошибка компиляции при попытке динамической установки вывода светодиода через конструктор класса

Сообщение Anonymous »

Я пытаюсь создать класс, использующий FastLED, в котором вывод светодиода можно будет устанавливать динамически. Однако я получаю ошибку компиляции при попытке вызвать FastLED.addLeds с помощью PIN-кода переменной-члена.

Код: Выделить всё

// LogoLED.h
#ifndef LOGOLED_H
#define LOGOLED_H
#include 

class LogoLED
{
public:
LogoLED(uint8_t numLeds, uint8_t dataPin);
void begin();
// ... other methods ...
private:
uint8_t _numLeds;
uint8_t _dataPin;
CRGB *_leds;
bool _isOn;
};
#endif

Код: Выделить всё

// LogoLED.cpp
#include "LogoLED.h"

LogoLED::LogoLED(uint8_t numLeds, uint8_t dataPin) : _numLeds(numLeds), _dataPin(dataPin), _isOn(false)
{
_leds = new CRGB[_numLeds];
}

void LogoLED::begin()
{
FastLED.addLeds(_leds, _numLeds);
off();
}

// ... other methods ...

Код: Выделить всё

// main.cpp
#include 
#include "LogoLED.h"
#define LED_PIN 6
LogoLED logoLED(4, LED_PIN);

void setup()
{
logoLED.begin();
// ... more setup code ...
}

void loop()
{
// ... loop code ...
}
При компиляции получаю следующую ошибку:

Код: Выделить всё

CopyNo instance of overloaded function "CFastLED::addLeds" matches the argument list.
Argument types are: (CRGB *, uint8_t)
Object type is: CFastLED
Как правильно вызвать функцию FastLED.addLeds, чтобы пин можно было устанавливать динамически? Я бы не хотел передавать пин-код в качестве параметра шаблона, так как хочу сохранить возможность изменять пин-код во время выполнения.

Подробнее здесь: https://stackoverflow.com/questions/790 ... onstructor

Вернуться в «C++»