Seite 1 von 1

std::vector - Ableitung/Komposition

Verfasst: 7. März 2016 13:36
von PoetikBiker
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

Re: std::vector - Ableitung/Komposition

Verfasst: 7. März 2016 17:36
von RHBaum
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;
};