seltsames verhalten bei einer einfachen struktur



  • 1. Liegt diese Zeile

    kreis.r = 1;
    

    auserhalb der main bzw. andere funktionen? wenn nein, versuchs mal so:

    typedef struct { 
        float A;  // Fläche ; A = (r*r) * pi 
        float U;  // Umfang ; U = pi * 2 
        float d;  // Durchmesser ; d = 2r 
        float r;  // Radius ; r = d/2 
        float pi; // Pi ; pi = U/2 
    
    } geoKreis ;
    .
    .
    .
    int main(void){
    
    geoKreis Kreis;
    
    Kreis.r=1;
    
    }
    


  • BorisDieKlinge schrieb:

    mach mal:

    typedef struct { 
        float A;  // Fläche ; A = (r*r) * pi 
        float U;  // Umfang ; U = pi * 2 
        float d;  // Durchmesser ; d = 2r 
        float r;  // Radius ; r = d/2 
        float pi; // Pi ; pi = U/2 
    
    } geoKreis ;
    .
    .
    .
    int main(void){
    
    geoKreis Kreis;
    
    Kreis.r=1;
    
    }
    

    Das ist C.
    Wir sind hier im C++ Forum:

    struct GeoKreis
    {
        GeoKreis(): r(1.0f){ }
        float A;  // Fläche ; A = (r*r) * pi 
        float U;  // Umfang ; U = pi * 2 
        float d;  // Durchmesser ; d = 2r 
        float r;  // Radius ; r = d/2 
        float pi; // Pi ; pi = U/2 
    };
    


  • ups sorry... wenn ich ne structur sehe denke ich in C^^



  • BorisDieKlinge schrieb:

    ups sorry... wenn ich ne structur sehe denke ich in C^^

    Tust Du das nicht immer? 🙄



  • du kannst nicht direkt auf die struktur zugreifen. du musst wie bei einer klasse auch eine instanz erzeugen. also:

    kreis kr;
    kr.r = 1;
    

    btw:

    wenn du die namen in der struktur ausschreibst ist es weniger verwirrend 😉



  • Machine schrieb:

    du kannst nicht direkt auf die struktur zugreifen. du musst wie bei einer klasse auch eine instanz erzeugen[...]

    Hat er doch:

    struct geoKreis //Typ Deklaration
    {
        float A;  // Fläche ; A = (r*r) * pi
        float U;  // Umfang ; U = pi * 2
        float d;  // Durchmesser ; d = 2r
        float r;  // Radius ; r = d/2
        float pi; // Pi ; pi = U/2
    
    } kreis; //Objekt Definition
    


  • Tachyon schrieb:

    Machine schrieb:

    du kannst nicht direkt auf die struktur zugreifen. du musst wie bei einer klasse auch eine instanz erzeugen[...]

    Hat er doch:

    struct geoKreis //Typ Deklaration
    {
        float A;  // Fläche ; A = (r*r) * pi
        float U;  // Umfang ; U = pi * 2
        float d;  // Durchmesser ; d = 2r
        float r;  // Radius ; r = d/2
        float pi; // Pi ; pi = U/2
    
    } kreis; //Objekt Definition
    

    sorry, übersehen 😉



  • Machine:
    die instanz habe ich erstellt, das kann man auf 2 arten machen. die erste (meine) und die zweite (deine). 🙂 das hier ist eh son kleines und übersichtliches testdingens, bei was größerem hast du natürlich recht.

    BorisDieKlinge:
    deine variante ist noch näher an C, als meine. *g

    Tachyon:
    meine stuktur ist doch C++, bloß ohne funktionen.

    Problem gelöst:
    meine struktur ist OK, der fehler lag darin, dass ich das objekt ausserhalb einer funktion benutzt habe. da man variablen global initialisieren kann, habe ich das auch auf objekte übertragen. wieso geht das nicht mit objekten?

    ps: wie kann man die eigenschaften eines objekts übersichtlich anzeigen (dump) lassen? sprich sowas wie sizeof(var).

    2. Problem:
    muss jetzt los zur arbeit. bis nachher. 😑 danke für die rege beteiligung!



  • ps: wie kann man die eigenschaften eines objekts übersichtlich anzeigen (dump) lassen? sprich sowas wie sizeof(var).

    Eine eigene Funktion schreiben oder einen Debugger verwenden.



  • irgendwelche tipps, wie ich da heran gehen sollte?



  • Was willst du den genau?

    Du kannst das in Dateien machen oder auf die Konsole, oder wie schon gesagt einfach mit dem Debugger anschauen..


Anmelden zum Antworten