JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=a39ef635c3be08bc6ce4eeb44b599f44Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Überladen von operator[]

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 11:03    Titel: Überladen von operator[] Antworten mit Zitat

Ich habe eine klasse:
Code:

class CMatrix
{
public:
//Blablabla andere Funktionen

//Setzt ein Feld
void SetField(int iWidth,int iHeight,char *pSet);

private:
//Vektor Klasse
vector<vector<char*> >   vVector;
}

//Setzt ein Feld
void CMatrix::SetField(int iWidth,int iHeight,char *pSet)
{
   //Gibt einen Fehler zurück wenn ein nichtexistierer Wert gefragt wird
   if((iWidth > g_iWidth) ||(iHeight > g_iHeight))
   {
      EXCEPTION("Es wurde ein Feld, das es gar nicht gibt gesetzt!");
   }
   
   //Setzt den Vector auf den gewünschten Wert
   vVector[iWidth][iHeight]=pSet;
}


Jetzt würde es mich interessieren wie ich den operator [] überlade damit ich es so benutzen kann;

CMatrix Test;
char *pSet="Test.png"
int iWidth=3;
int iHeight=1;
Test[iWidth][iHeight]=pSet;

Und nicht wie im moment:
Test.SetField(iWidth,iHeight,pSet);
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 11:07    Titel: Antworten mit Zitat

Ich bin mir nicht sicher aber ich glaube da musst du den =-Operator überladen. Ansonsten würde ich das machen, was ich dir im Chat erzählt hab.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 11:13    Titel: Antworten mit Zitat

Du hast mir ja im icq den link zu http://www.informit.de/books/c++21/data/kap15.htm#185398 geschickt,
nur leider komme ich bei den Tutorial nicht ganz mit!
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 11:25    Titel: Antworten mit Zitat

Das war ca. 10-20 min. her. Du solltest das Kapitel schon studieren und man lernt solche Sachen nunmal nicht so schnell. Wenn wir dir den Quelltext dazu geben hast du Zero gelernt.

Btw.: Das ist ein Buch und kein Tut. ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jörg
JLI MVP
JLI MVP



Anmeldedatum: 19.07.2002
Beiträge: 182
Wohnort: Siegen/NRW
Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 14:28    Titel: Antworten mit Zitat

Versuch mal das:
Code:
CMatrix
{
...
    vector<char*> & operator[] (const int & nWidth)
    {
        return vVector[nWidth];
    }
}

_________________
www.messiahzone.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 14:46    Titel: Antworten mit Zitat

Aber das ist dann doch nur ein-dimensional?
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 06.09.2003, 14:59    Titel: Antworten mit Zitat

eigentlich schon, nur es wird ein vektor zurückgegeben auf den dann der zweite [] operator angewendet wird:

Matrix[x][y] // Matrix[x] gibt einen vector zurück
vector[y] // [y] wird auf den zurückgegebenen vector angewendet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
abc_d
JLI Master Trainee


Alter: 34
Anmeldedatum: 27.01.2003
Beiträge: 615

Medaillen: Keine

BeitragVerfasst am: 07.09.2003, 14:41    Titel: Antworten mit Zitat

Ok jetzt kann ich die matrix per

char *pTest=Matrix[2][4];

abfragen.
Wie überlade ich jetzt noch das = ?
_________________
http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.

Never touch a running System - der Systemling
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 07.09.2003, 20:14    Titel: Antworten mit Zitat

Mit dem hier:
Code:
CMatrix::operator= (char* Parameter)
{
    //Zuweisung von Parameter auf die Matrix
}

So müsste es eigentlich klappen Wink
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum