die Klasse eines Objektes feststellen



  • hi allerseits,
    im laufe meines programms muss ich an einer stelle die klasse
    der objekte eines vectors feststellen
    kann mir jmd einen tip geben wie ich sowas grundsätzlich angehe ?



  • Hallo

    siehe typeid bzw dynamic_cast.
    Allerdings sollte im allgemeinen bei einen guten Konzept mit Polymorphie solche Sachen nicht notwendig sein.

    bis bald
    akari



  • danke, problem hat sich tatsächlich aus der klassenstruktur heraus erledigt,
    dafür habe ich nun ein anderes, bei dem ich nicht so recht weiterkomme folgende klasse:

    class Schaltung
    {  
          vector <Verbindung> v; // Verbindungen von <-> zu
          vector <Schaltelement*> s; // Schaltelemente
       public:
          void add ( Schaltelement * se );
          void verbinde ( int * von, int * zu ); 
          void berechne ( );
    
    };
    

    hierbei sei ersteinmal nicht weiter betrachtet wie sich Verbindung und Schaltelement gestaltet

    void Schaltung::berechne()
    {
    
       for (int i=0; i < s.size(); i++)
          *s[i].logfkt();
    }
    

    obiger aufruf führt jetzt zu einem fehler, liegt hier ein semantischer fehler vor ?


  • Mod

    Balrok schrieb:

    *s[i].logfkt();
    

    obiger aufruf führt jetzt zu einem fehler, liegt hier ein semantischer fehler vor ?

    der punkt operator hat vorrang vor dem dereferenzierungsoperator. entweder du benutzt klammern:

    (*s[i]).logfkt();
    

    oder den pfeiloperator

    s[i]->logfkt();
    


  • möp, vielen dank, überhaupt net dran gedacht 😉


Anmelden zum Antworten