Vertex
2005-04-02, 20:28:32
Visual C++ 6
OOP
vector aus der STL im Einsatz
also... mein Problem ist, dass ich irgendwie den operator= nicht hinbekomme...
an den roten Stellen sind eventuell Fehler
ich versuche mal so wenig wie möglich zu posten, um es nicht noch unübersichtlicher zu machen, als es so schon ist... fals was wichtiges fehlen sollte, bitte schreiben...
noch was zur kurzen Erklärung, um was es in dem Proggi geht: Es werden immer 3 Buchstaben in einem Objekt eines dynamischen Arrays hineingeschrieben... zusätzlich wird dabei noch die Position gespeichert... ebenfalls dynamisch, damit die 3 Buchstaben nicht mehr als ein Objekt verbrauchen...
meine Klasse:
class Buchstabi
{
protected:
char Bfolge[3]; //völlig uninteressant
public:
vector <int*> Positionen; //kritisch... bereitet mir beim Kopieren Kopfzerbrechen
Buchstabi(char *Buchstabenfolge=" ");
~Buchstabi();
void SetBfolge(char * Buchstabenfolge);
char GetBfolge0();
char GetBfolge1();
char GetBfolge2();
Buchstabi & operator=(Buchstabi &a); //operator=
Buchstabi (Buchstabi &a); //Copy Konstruktor
};
so erzeug ich mir dann ein nettes Array in meiner main... obwohl... eigentlich böses Array... ganz böses Array... http://www.forum-3dcenter.net/vbulletin/images/3dc/smilies/common/wink.gif
vector <Buchstabi*> Bfobj;
damit ich dann schön ein paar dynamische Objekte reinhauen kann...
Buchstabi *tempobjekt;
tempobjekt= new Buchstabi;
Bfobj.insert(Bfobj.end(),tempobjekt);
so haue ich neue Positionen rein: (Eh gleiches Prinzip wie beim Objekt)
int *temppositionen;
temppositionen = new int;
Bfobj[0]->Positionen.insert(Bfobj[0]->Positionen.end(),temppositionen);
so... jetzt hab ich ne schöne QuicksortFunktion, in der halt die Objekte ein bisschen kopiert werden...
int partition(vector <Buchstabi*> &array, int top, int bottom) //Keine Ahnung wie ich das Objektarray übergeben soll, da ich nicht mal weiß wie ich die in beim kopieren brauche
{
vector <Buchstabi*> temp;
...
temp = array[i]; //hier regt sich der Compiler auf: error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen
//rechtsseitigen Operator vom Typ 'class Buchstabi *' akzeptiert (oder keine geeignete Konvertierung moeglich)
}
Meine Versuche zum operator= und zum Copy Konstruktor:
Buchstabi & Buchstabi::operator =(Buchstabi &a)
{
Bfolge[0]=a.GetBfolge0();
Bfolge[1]=a.GetBfolge1();
Bfolge[2]=a.GetBfolge2();
Positionen=a.Positionen;
return *this;
}
Buchstabi::Buchstabi (Buchstabi &a)
{
Bfolge[0]=a.GetBfolge0();
Bfolge[1]=a.GetBfolge1();
Bfolge[2]=a.GetBfolge2();
Positionen=a.Positionen;
}
bitte bitte bitte helft mir http://www.forum-3dcenter.net/vbulletin/images/3dc/smilies/common/bluesmile.gif
OOP
vector aus der STL im Einsatz
also... mein Problem ist, dass ich irgendwie den operator= nicht hinbekomme...
an den roten Stellen sind eventuell Fehler
ich versuche mal so wenig wie möglich zu posten, um es nicht noch unübersichtlicher zu machen, als es so schon ist... fals was wichtiges fehlen sollte, bitte schreiben...
noch was zur kurzen Erklärung, um was es in dem Proggi geht: Es werden immer 3 Buchstaben in einem Objekt eines dynamischen Arrays hineingeschrieben... zusätzlich wird dabei noch die Position gespeichert... ebenfalls dynamisch, damit die 3 Buchstaben nicht mehr als ein Objekt verbrauchen...
meine Klasse:
class Buchstabi
{
protected:
char Bfolge[3]; //völlig uninteressant
public:
vector <int*> Positionen; //kritisch... bereitet mir beim Kopieren Kopfzerbrechen
Buchstabi(char *Buchstabenfolge=" ");
~Buchstabi();
void SetBfolge(char * Buchstabenfolge);
char GetBfolge0();
char GetBfolge1();
char GetBfolge2();
Buchstabi & operator=(Buchstabi &a); //operator=
Buchstabi (Buchstabi &a); //Copy Konstruktor
};
so erzeug ich mir dann ein nettes Array in meiner main... obwohl... eigentlich böses Array... ganz böses Array... http://www.forum-3dcenter.net/vbulletin/images/3dc/smilies/common/wink.gif
vector <Buchstabi*> Bfobj;
damit ich dann schön ein paar dynamische Objekte reinhauen kann...
Buchstabi *tempobjekt;
tempobjekt= new Buchstabi;
Bfobj.insert(Bfobj.end(),tempobjekt);
so haue ich neue Positionen rein: (Eh gleiches Prinzip wie beim Objekt)
int *temppositionen;
temppositionen = new int;
Bfobj[0]->Positionen.insert(Bfobj[0]->Positionen.end(),temppositionen);
so... jetzt hab ich ne schöne QuicksortFunktion, in der halt die Objekte ein bisschen kopiert werden...
int partition(vector <Buchstabi*> &array, int top, int bottom) //Keine Ahnung wie ich das Objektarray übergeben soll, da ich nicht mal weiß wie ich die in beim kopieren brauche
{
vector <Buchstabi*> temp;
...
temp = array[i]; //hier regt sich der Compiler auf: error C2679: Binaerer Operator '=' : Kein Operator definiert, der einen
//rechtsseitigen Operator vom Typ 'class Buchstabi *' akzeptiert (oder keine geeignete Konvertierung moeglich)
}
Meine Versuche zum operator= und zum Copy Konstruktor:
Buchstabi & Buchstabi::operator =(Buchstabi &a)
{
Bfolge[0]=a.GetBfolge0();
Bfolge[1]=a.GetBfolge1();
Bfolge[2]=a.GetBfolge2();
Positionen=a.Positionen;
return *this;
}
Buchstabi::Buchstabi (Buchstabi &a)
{
Bfolge[0]=a.GetBfolge0();
Bfolge[1]=a.GetBfolge1();
Bfolge[2]=a.GetBfolge2();
Positionen=a.Positionen;
}
bitte bitte bitte helft mir http://www.forum-3dcenter.net/vbulletin/images/3dc/smilies/common/bluesmile.gif