D
Mal abgesehen davon, dass ich das typedef in der Klasse machen würde, (wegen dem späteren Zugriff auf den Typen vlt.) ist das Problem so ja, dass du überhaupt keine Kapselung der Funktionalität hast. Sprich wenn du jetzt bei push_back etwas eigenes haben willst, kann der Benutzer immernoch über das von dir zurückgegeben Objekt die ursprüngliche Funktion aufrufen. Das hättest du nicht, wenn du eine richtig ableitbares Objekt hast, dass virtuelle Funktionen anbietet, welche du überschreiben kannst. Oder wie man es hier eher machen würde das Obejkt nicht freigeben und dann über selbst geschriebe Funktionen die Funktionen des Objektes kapseln.
class myList
{
public:
void push_back ( whatever el )
{
if ( el == irgendwas)
l.push_back ( el );
}
...
private:
std::vector<whatever> l;
};
So in etwa. Aber das ist halt sehr viel Arbeit, wenn du die gesamte Funktionalität haben willst.
Aber wie schon gesagt, wenn du rein neue Funktionalität zufügen willst, ist eine ableitung, oder eine solche Klasse gar nicht nötig, sondern lediglich eine freie Funktion, die das für dich macht. Das gute daran ist, dass du (je nach Anforderung) dann gleich eine Funktion hast, die mit anderen Containern auch funktioniert, ohne eine Zeile Code schreiben zu müssen.