KLassen-Pointer Instanziierungs-Frage

Habe eine Klasse in tlcRGBLED.h deklkariert und die Methoden in tlcRGBLED.cpp. Es funktioniert, wenn ich die LEDs einzeln deklariere und der Konstruktor die Channels zuweist.

/* tlcRGBLED.h */
#include <WProgram.h>

class RGBLED {
  uint8_t TLC_Channel_Red, TLC_Channel_Green, TLC_Channel_Blue;
  uint16_t Red, Green, Blue;
  public:      
  RGBLED(uint8_t,uint8_t,uint8_t);      
  void setChannels(uint8_t, uint8_t, uint8_t);
  void setTLC(uint16_t,uint16_t,uint16_t);
};
/* tlcRGBLED.cpp */
#include <WProgram.h>
#include "tlcRGBLED.h"
#include <Tlc5940.h>

RGBLED::RGBLED(uint8_t cr, uint8_t cg, uint8_t cb){
  TLC_Channel_Red = cr;
  TLC_Channel_Green = cg;
  TLC_Channel_Blue = cb;
}

void RGBLED::setTLC(uint16_t r, uint16_t g, uint16_t b){
 Red = r;
 Green = g;
 Blue = b;

  Tlc.set(TLC_Channel_Red, Red );
  Tlc.set(TLC_Channel_Green, Green );
  Tlc.set(TLC_Channel_Blue, Blue );

}

der Sketch-File sieht so aus:

/* RGBLED_Test.cpp */
#include <Tlc5940.h>
#include <tlcRGBLED.h>

RGBLED LED1(0,1,2);


void setup()
{
  Tlc.init();
}

void loop()
{
  LED1.setTLC(0,4095,0);
  Tlc.update();
}

Ich möchte allerdings die LEDs über Indizes ansprechen können also als LED[n]. Dafür gäbe es ja eine Konstruktion den Pointer auf die Klasse mit der Deklaration:

RGBLED * LED = new RGBLED[16];

Das akzeptiert Arduino nicht, er sagt, dass es keine Definition für die Methode RGBLED::RGBLED() für die Klasse RGBLED gibt.
Ich habe das über einen Dummykonstruktor versucht
RGBLED::RGBLED(){}, doch das juckt ihn nicht.

Nun habe ich versucht den vorhandenen Konstruktur für die Zuweisung der Channels einzusetzen, allerdings beiße ich mir nun die Zähne aus, da ich nicht weiß, wie ich den Pointer direkt initialisieren kann:

/* RGBLED_Test.cpp */
#include <Tlc5940.h>
#include <tlcRGBLED.h>


void setup()
{
  for(int i=0; i<=4; i++){
    //Erzeuge RGBLED
    RGBLED * LED(i*3,i*3+1,i*3+2) = new RGBLED[i];
  }
  Tlc.init();
}

void loop()
{
  for(int i=0; i<=4; i++){
    LED[i].setTLC(4095,0,0);
  }
  Tlc.update();
}

oder ähnliches funktioniert nicht. Der Compiler wirft eine Menge Fehlermeldungen:
RGBLED_Test.cpp: In function ‘void setup()’:
RGBLED_Test:8: error: initializer expression list treated as compound expression
RGBLED_Test:8: error: invalid conversion from ‘int’ to ‘RGBLED*’
RGBLED_Test:8: error: expected ‘,’ or ‘;’ before ‘=’ token
RGBLED_Test.cpp: In function ‘void loop()’:
RGBLED_Test:16: error: ‘LED’ was not declared in this scope

Mag sein, dass ich hier auch einen grundlegenden Fehler in c++ mache, da ich mit c++ noch nicht so vertraut bin!

Falls jemand weiß, wie ein Pointer richtig instanziert werden kann, wenn für den Konstrukor Parameter zu übergeben sind, dann wäre ich um Hilfestellung dankbar

Gruß Tom

Es wäre auch diese Lösung denkbar also ‘normales’ Array von RGBLED-Objekten

...
RGBLED LED[16];

void setup()
{
  for(int i=0; i<=4; i++){
    //Initialisiere LED
    LED[i].setChannels(i*3,i*3+1,i*3+2);
  }
  Tlc.init();
}

Doch dann sagt der Compiler
RGBLED_Test:3: error: no matching function for call to ‘RGBLED::RGBLED()’ usw.

OK, Ich habs nun so gelöst, dass ich ein Objekt-Array über den Konstruktor der Channels-Zusweisung initialisiere (also kein Pointer, sondern explicite RGBLED-Objekte in ein Array geladen):

RGBLED LED[] = {
  RGBLED(0,1,2),
  RGBLED(3,4,5),
  RGBLED(6,7,8),
  RGBLED(9,10,11),
  RGBLED(12,13,14)
};

Damit funktioniert die Geschichte :), so wie ich es wollte. Habe allerdings nun ein anderes Problem, das ich in einem neuen Thread posten werde >:(