myGully.com

myGully.com (https://mygully.com/index.php)
-   Entwicklung & Programmierung (https://mygully.com/forumdisplay.php?f=72)
-   -   c++ hilfe (https://mygully.com/showthread.php?t=4170376)

serking 01.11.15 15:49

c++ hilfe
 
#include <iostream>



using namespace std;





class starter{



private :



int tag;

int monat;

int jahr;



public :


int getTag(){ return tag;}
int getMonat(){ return monat;}
int getJahr(){ return jahr;}
void set(int t, int m ,int j);
void get();
starter(int t, int m, int j);
};

starter :: starter(int t, int m, int j)
{
set(t,m,j);
}

void starter::get()

{ //cout<<"DATUM "<<getTag()<<"."<<getMonat()<<"."<<getJahr()<<endl ;
cout<<"DATUM "<<tag<<"."<<monat<<"."<<jahr<<endl;

}
void starter::set(int t, int m, int j)

{

if (j<1970||j>2099)

j = 1970;

if (m<1 || m>12)

m =1;

if (t<1 || t>30)

tag = t; monat = m; jahr = j;

};


int main(){

starter datum(11,10,1990);

datum.get();


return 0;

}



Nachdem kompilieren beim Ausführern des programmes

DATUM 1354673184.10.1990

Wieso zeigt er mir die Speicheradresse beim Tag an ?

DuWi><er 01.11.15 20:30

Ist richtig!

laterne2 07.11.15 11:06

das Problem ist deine set-Methode. Wenn man die mal ordentlcih formatiert, sieht man es auch schon:

Code:

void starter::set(int t, int m, int j)
{
    if (j<1970||j>2099)
        j = 1970;

    if (m<1 || m>12)
        m =1;

    if (t<1 || t>30)
        tag = t;

    monat = m;
    jahr = j;
};

falls die Bedingung "(t<1 || t>30)" nicht zutrifft, wird folglcih die variable "tag" nicht gesetzt und ist weiterhin nicht initialisiert. Und dadurch bekommst du als Ausgabe später eben den Wert ausgegeben, der als integer interpretiert in dem speicherbereich liegt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.