std::vector - Ableitung/Komposition

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
PoetikBiker
Beiträge: 41
Registriert: 2. Mai 2012 13:43

std::vector - Ableitung/Komposition

Beitrag von PoetikBiker » 7. März 2016 14:36

Hallo zusammen,

ich hoffe meine Frage ist nicht allzu dumm... :?

Es geht darum, das ich einen std::vector als Komposition benutzen möchte aber nicht weiß, wie ich dann über einen range iterieren kann.

Beispiel wenn ich ableiten - ich weiß, dass ich die Klasse wegen des fehlenden viruellen Destruktors dann nicht polymorph verwenden kann:
template <class T>
class MyVector : public std::vector<T>
jetzt kann ich problemlos über eine Range iterieren:
MyVector<int> v;

for ( int i : v)
{.....
Jetzt will ich den Vekor aber als Komposition benutzen:
template <class T>
class MyVector
{
private std::vector<T> vec;
Wie kann ich nun über einen Bereich iterieren, also genau wie zuvor:
MyVector<int> v;

for ( int i : v)
{.....

Vielen Dank für eure Hilfe :D

RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: std::vector - Ableitung/Komposition

Beitrag von RHBaum » 7. März 2016 18:36

ich weiß, dass ich die Klasse wegen des fehlenden viruellen Destruktors dann nicht polymorph verwenden kann
Naja kann ist in dem Falle ein recht hartes Wort.
Technisch isses möglich, aber man sollte es trotzdem nicht tun.

DIe frage ist, wie weit du abstrahieren musst ....
wenn du 1:1 die funktionalitaet uebernehmen kannst, geht sowas:

Code: Alles auswählen

template <class T>
class MyVector
{
public:   
    using iterator = std::vector<T>::iterator;
    using const_iterator = std::vector<T>::const_iterator;
  
    iterator begin() {return mVec.begin();}
    const_iterator cbegin() {return mVec.cbegin();}

    ...
private: 
    std::vector<T> mVec;
};

Antworten