In Game Programming Gems 6 ist schon ein Artikel darüber drin, der eine einfache C++ Implementierung beschreibt.
Mehrere Komponenten eines Typs kann man nicht hinzufügen, weil das dem Grundprinzip widerspricht. Ich war schon versucht, diese Option einzubauen, um z.B. eine ColorComponent als ForegroundColor und BackgroundColor nutzen zu können, allerdings ist das dann auch wieder ein Rückfall in ein objektorientiertes Muster, da man hier ja versucht, zusammengehörende Daten und Funktionen in eine Klasse zu kapseln und zu verwenden.
Wenn man so etwas machen will, sollte man die Paradigmen klar trennen.
1) die Daten und Funktionen in eine normale Klasse kapseln, z.B. class Color (Objektorientiert)
2) die Komponenten wirklich als Aspekte einer Entity behandeln, also eine Klasse BackgroundColor und ForegroundColor erstellen, wie jeweils eine Instanz der Klasse "Color" enthalten und modifizieren. (Komponentenbasiert)