Gültigkeitsbereich von Instanzen(Objekten)



  • Hallo,

    Wenn ich eine Instanz in meiner main Struktur erstelle ist diese doch auch nur dort gültig oder ?

    Bsp.:

    int xyz(){
    Mercedes.Fahren();
    }

    int main(){
    CAuto Mercedes;
    Mercedes.MotorAn();
    xyz();
    }

    Das ganze funktioniert so ja nicht weil es in xyz noch keinen Mercedes gibt und wenn ich dort auch einen erstelle wird mein Alter ja zerstört bzw. überschrieben oder ?!

    Wie löst man solche Probleme? gibt es auch dort eine Art Prototypen ? oder gar so etwas wie globale Instanzen ? ( sicher nicht im sinne des erfinders 🙂 )

    THX Matze



  • int xyz(CAuto& Auto){
       Auto.Fahren();
    }
    
    int main(){
       CAuto Mercedes;
       Mercedes.MotorAn();
       xyz(Mercedes);
    }
    

    EDIT: Hups! "auto" sollte die Variable natürlich nicht heißen.



  • Vielen Dank 🙂



  • Hups! "auto" sollte die Variable natürlich nicht heißen.
    

    naja, es hat sich bewährt Klassen/Structnamen groß zu schreiben und instanzen klein.
    das das bei auto nicht geht ist klar.
    Ich hab mir aber angewöhnt bei funtkionsparameter nuch ein i_, o_ oder io_ voranzustellen, um damit zu kennzeichnen, dass es ein reiner in-, out- oder beides- Parameter ist



  • vlad_tepesch schrieb:

    Ich hab mir aber angewöhnt bei funtkionsparameter nuch ein i_, o_ oder io_ voranzustellen, um damit zu kennzeichnen, dass es ein reiner in-, out- oder beides- Parameter ist

    Scheint ein sehr kontroverses Thema zu sein, die ungarische Notation.
    Ich persönlich halte gar nichts davon.

    Wer interessiert ist, wie kontrovers das Thema ist, soll im Forum nach "ungarisch" suchen.

    Simon



  • vlad_tepesch schrieb:

    ...naja, es hat sich bewährt Klassen/Structnamen groß zu schreiben und instanzen klein....

    Im Prinzip schreibe ich auch Variablennamen klein ... aber hier war es mir nicht wichtig genug, um mir einen anderen sprechenden (und trotzdem "nicht-keyword-igen") Bezeichner auszudenken...

    Von einer "i_"/"o_"-Kennzeichnung halte ich aber ehrlich gesagt nicht viel. Diese Information steckt bereits "compilergesichert" im Typen und bei so einer (ungeprüften) Schreibweise gerät man nur in Gefahr von Inkonsistenzen...
    (leider bietet C++ keine Möglichkeit, zwischen Output- und Update-Parametern zu unterscheiden ... nun gut - geht halt nicht anders).
    - Aber ich stricke auch nicht fremden Code um, der sowas (oder "m_"-Kennzeichner oder ungarische Notation oder ...) nutzt. 😉

    Gruß,

    Simon2.


Anmelden zum Antworten