Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

1

02.06.2012, 19:34

C++ Variable gibt nicht den richtigen Wert aus

Hallo,

Ich habe ein sehr seltsames Problem: Ich habe eine Klasse namens Mensch. In der Klasse gibt es eine Funktion namens AlterGeben() und AlterAnzeigen(). In der main.cpp rufe ich nun die Funktion AlterGeben(5) auf, wobei die 5 das Alter ist. Aber in der Konsole steht nicht 5 sondern eine riesige Zahl?

Hier mein Code:
in der main:

C-/C++-Quelltext

1
2
m.AlterGeben(5);
m.AlterAnzeigen();


in der Mensch.h:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>

using namespace std;

// Mensch Klasse
class Mensch
{
private:
    unsigned int alter;
    bool Geschlecht; // true = Mann, false = Frau
    char Name[50];

public:
    void NameGeben(char *n)
    {
        strcpy_s(Name, n);
    }
    void NameZeigen()
    {
        cout << Name;
    }
    void AlterGeben(unsigned int a)
    {
        a = alter;
    }
    void AlterAnzeigen()
    {
        cout << alter;
    }
};


Die Konsole gibt mir 3435973836 aus...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

02.06.2012, 19:35

Schaut dir deine AlterGeben() Methode nochmal ganz genau an ;)

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

3

02.06.2012, 19:39

?
An dem unsigned liegt es nicht, die = Zuweisung sollte auch richtig sein und nen Rückgabewert braucht die Funktion auch nicht...

PS: Hätte ich das erkannt, hätte ich die Frage nicht reingestellt...

4

02.06.2012, 19:43

Du weist "alter", "a" zu und nicht umgekehrt. Du machst es so, wie es nicht sein sollte.

C++-Coder

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

02.06.2012, 19:44

[...] die = Zuweisung sollte auch richtig sein [...]

Nein, bei der Zuweisung liegt dein Fehler. Überleg dich nochmal ganz genau welchem Objekt du da welchen Wert zuweist ;)

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

6

02.06.2012, 19:46

:crazy:

Man verdammt, ich dachte Gleichheit ist transitiv?

a = b
b = a

Da hab ich wohl irgendeine Seite in meinem C++ buch verpennt?!

7

02.06.2012, 19:50

Gleichheit ist auch transitiv, aber das ist der Zuweisungs-Operator :)

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

02.06.2012, 19:50

Das gilt nur für den Vergleichsoperator.
Wenn du einen Code wie

C-/C++-Quelltext

1
2
int a = 2, b = 3;
a = b;

hast und es so sein sollte wie du es dir denkst. Welchen Wert haben a und b danach?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

02.06.2012, 19:56

Man verdammt, ich dachte Gleichheit ist transitiv?

Das ist keine mathematische Äquivalenzrelation, sondern eine Zuweisung ;)

Luca

Treue Seele

  • »Luca« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Braunschweig

  • Private Nachricht senden

10

02.06.2012, 19:59

@NachoMan: a = 3 und b = 3 ?

Werbeanzeige