Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vectorzugriff

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.07.2003, 13:17 Uhr
~Gast0
Gast


Wie kann man auf einen vector einer anderen Klasse zugreifen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.07.2003, 13:34 Uhr
typecast
aka loddab
(Operator)


Wenn du einen Instanz der Klasse hast, dann kannst du mit Intasnzname.Vectorname darauf zugreifen.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.07.2003, 13:45 Uhr
~Gast0
Gast


Klappt leider nicht!


C++:

class KlasseA
{
public:

    vector<int> aDaten;
    vector<vector<MyClass*> > testDat;
...
}





C++:
Class KlasseB
{
public:
    KlasseA* a;
...
}





C++:
//Constructor
KlasseB::KlasseB(KlasseA* a)
{
    int anzahl = a.aDaten.size();    //funktioniert nicht! Meldung: Der linke Teil von aDaten muß
                    //eine Klasse/Struktur/union sein
}




Innerhalb einer Klasse funkt alles mit den vectoren. aber auch wie man auf ein vector<vector<MyClass*> > testDat zugreift, habe ich auch innerhalb einer Klasse noch nicht ganz herausbekommen.


Bearbeitung von loddab:
cpp-Tags gesetzt

Dieser Post wurde am 30.07.2003 um 13:18 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.07.2003, 13:55 Uhr
0xdeadbeef
Gott
(Operator)


Das ist ein Pointer auf eine KlasseA. Dementsprechend:

C++:
int anzahl = a->aDaten.size();


das entspricht

C++:
int anzahl = (*a).aDaten.size();


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.07.2003, 14:01 Uhr
~Gast0
Gast


Werde ich gleich ausprobieren, habe aber noch eine andere Frage (siehe //NEU):


C++:

class KlasseA
{
public:

    vector<int> aDaten;
    vector<vector<MyClass*> > testDat;
...
}





C++:
Class KlasseB
{
public:
    KlasseA* a;
    KlasseC* c;            //NEU
...
}




NEU:


C++:
//NEU
class KlasseC
{
public:

    vector<int> xyzDaten;
    vector<vector<MyClass*> > xyztestDat;
...
}






C++:
//Constructor
KlasseB::KlasseB(KlasseA* a)
{
    int anzahl = a.aDaten.size();    //funktioniert nicht!
                    //Meldung: Der linke Teil von aDaten muß
                    //eine Klasse/Struktur/union sein

//NEU    Wie kann ich es dann schaffen,
//hier auf die Vectoren der KlasseC zuzugreifen?
//NEU   Muß ich hier innerhalb des Codes vor
//dem Zugriff dann nochmal KlasseC* c; angeben?


}




Bearbeitung von loddab:
cpp-Tags gesetzt

Dieser Post wurde am 30.07.2003 um 13:19 Uhr von Loddab editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.07.2003, 14:06 Uhr
0xdeadbeef
Gott
(Operator)


Du hast garkeine Instanz der KlasseC, sondern nur einen Pointer, dem du erst noch eine Instanz zuweisen müsstest. Also:

C++:
KlasseB::KlasseB(KlasseA *a) {
    int anzahl = a->aDaten.size();

    //weil es sonst kein c gibt, wird hier automatisch auf this->c zugegriffen.
    //Wenn du auf this->a zugreifen musst, musst du this-> explizit dazu
    //schreiben,weil das lokale a aus der Parameterliste das a aus der Klassen-
    //definition überdeckt. Besser wäre aber, den Parameter anders zu nennen.
    c = new KlasseC();
    this->a = new KlasseA();
}

//Destruktor
KlasseB::~KlasseB(){
    //nicht vergessen, den Speicher wieder freizugeben.
    delete a;
    delete c;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: