tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von deepthroat
ERLEDIGT
JA
ANTWORTEN
1
ZUGRIFFE
357
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Jennesta
    Jennesta Jennesta ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Aachen
    Beiträge
    215
    Hallo,
    ich habe irgendwie Probleme, an Elemente einer Klasse zu kommen.
    ich habe 3 Verschiedene Klassen, diese stammen alle von einer Basisklasse ab. Folgender Aufbau:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    typedef struct OutputElement_ {
        std::string OutputType;
        std::string OutputID;
    } OutputElement;
     
    typedef struct KMLContour_type_ : public OutputElement {
        BoundingBox_type BoundingBox;
        SpectrumResource_type SpectrumResource;
        std::vector<int> ContourLevel;
    } KMLContour_type;
    [...]

    Nun besitze ich einen Vektor indem ich die OutputElemente speicher.
    Code cpp:
    1
    
    std::vector<OutputElement> OutputDefinition;

    Nun kann ich anhand der Variablen OutputType die verschiedene structs identifizieren und sobald das getan den Elementen ihre spezifischen Werte zuweisen. Leider funktionieren meine Versuche wie
    Code cpp:
    1
    
    OutputDefinition.at(num_outputelements).BoundingBox = box;
    nicht. Hier gibt es den Fehler "Field 'Boundingbox' could not be resolved"

    Daher nun die Frage, wie kann ich es schaffen, dass es so funktioniert? Sind hier vielleicht casts notwendig? Wenn ja wie sieht das aus? Oder ist der Ansatz generell nicht gut?

    Grüße Jennesta
    Geändert von Jennesta (29.11.11 um 00:18 Uhr)
     
    Was soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von Jennesta Beitrag anzeigen
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    typedef struct OutputElement_ {
        std::string OutputType;
        std::string OutputID;
    } OutputElement;
     
    typedef struct KMLContour_type_ : public OutputElement {
        BoundingBox_type BoundingBox;
        SpectrumResource_type SpectrumResource;
        std::vector<int> ContourLevel;
    } KMLContour_type;
    [...]
    In C++ kannst du dir die typedef's sparen, sie sind überflüssig.

    Außerdem ist es nicht unbedingt guter OOP Stil Attribute öffentlich zu machen.

    Zitat Zitat von Jennesta Beitrag anzeigen
    Nun besitze ich einen Vektor indem ich die OutputElemente speicher.
    Code cpp:
    1
    
    std::vector<OutputElement> OutputDefinition;
    Du kannst in diesem Vektor ausschließlich OutputElement Instanzen speichern. D.h. in diesem Vektor sind keine KMLContour_type Objekte drin, wenn du welche einfügst, werden diese automatisch zu OutputElement konvertiert.

    Du mußt Zeiger verwenden und dann mit dynamic_cast arbeiten:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    std::vector<OutputElement*> OutputDefinition;
     
    ...
     
    KMLContour_type* p = dynamic_cast<KMLContour_type*>(OutputDefinition.at(num_outputelements));
     
    if (p != 0) {
      p->BoundingBox = box;
    }
    Gruß
    Jennesta bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. JPA Table cannot be resolved
    Von anjepieft im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 26.11.11, 00:03
  2. ControllerListener cannot be resolved as a type
    Von Nord-Süd-Richtung im Forum Java
    Antworten: 2
    Letzter Beitrag: 07.12.09, 14:01
  3. JSEclipe - document cannot be resolved
    Von DataFox im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 16.11.08, 20:43
  4. The import javax.persistence cannot be resolved
    Von Alexander1307 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 16.11.08, 01:32
  5. Fehler: cannot be resolved
    Von ShastyMcNastee im Forum Java
    Antworten: 3
    Letzter Beitrag: 08.12.07, 18:44