V
Hallo,
SortedArray ist kein Template, du nutzt es aber als solches. Das kann natuerlich
nicht funktionieren.
Du hast ja bereits gesagt, wie es aussehen muesste, damit es funktioniert.
Bleibt nur die Frage, sollte SortedArray nicht besser von Vector erben? Da
faellt mir ein, waere hier der Name SortedVector nicht angebrachter?
Keine Garantie, dass ich irgendetwas uebersehen habe
#include "vector.h"
template<class T>
class SortedArray : public Vector<T>
{
private:
int findIndex(const T &tofind)
{
for (int i=0; i<m_size; i=i+1)
if (m_data[i]==tofind) return i;
return -1;
};
public:
SortedArray()
: Vector(0)
{}
T *find(const T &toFind)
{
int found=findIndex(toFind);
if(found!=-1)
return &m_data[found];
else
return 0;
};
bool has(const T &toFind)
{
return find(toFind)!=0;
};
//hier wird gar nichts zurueckgegeben, gewollt? sollte es void sein?
int insert(const T &toInsert)
{
if(!has(toInsert))
{
m_data.grow(m_size+1);
m_data[m_size]=toInsert;
m_size=m_size+1;
};
};
//siehe kommentar von insert
int remove(const T &toRemove)
{
int found=findIndex(toRemove);
if(found!=-1)
{
m_data.movedown(found+1,m_size,found);
--m_size;
};
};
};
Jetzt muss natuerlich m_data und m_size entweder in den protected-Bereich der
Vector-Klasse, oder du bietest entsprechende Memberfunktionen an, die dir
eben diese liefern.
mfg
v R