Forum: PC-Programmierung C++: Klassenmember ändert den Wert nicht


von Humpen (Gast)


Lesenswert?

Hallo Leute, ich habe folgenden Code:
1
#include "../std_lib_facilities_C++11.h"
2
3
class Car {
4
public:
5
    Car(int i) : mass{i} {};
6
    int read_mass() {return mass;};
7
    void set_mass(int i) {mass == i;};
8
9
private:
10
    int mass;
11
};
12
13
int main()
14
{
15
    Car bmw {2600};
16
    cout << bmw.read_mass() << endl;
17
    bmw.set_mass(2000);
18
    cout << bmw.read_mass() << endl;
19
}

Obwohl ich vor dem letzten cout den Wert "mass" mithilfe der Funktion 
"set_mass(2000)" setze, ändert sich die Variable nicht. An was liegt 
das?

von Johannes S. (Gast)


Lesenswert?

Humpen schrieb:
> {mass == i;}

ist ein Vergleich, keine Zuweisung...

von Tobias P. (hubertus)


Lesenswert?

Humpen schrieb:
> Car bmw {2600};

compiliert das so wirklich? mit geschweiften Klammern?

von Nils P. (torus)


Lesenswert?

Tobias P. schrieb:
> compiliert das so wirklich? mit geschweiften Klammern?

Mit C++11 geht das. Das Feature heist "extended initializer list".

@Humpen, schalte bei deinem Kompiler mal den Warning Level auf maximum. 
Dann passieren Dir solche Fehler nicht.

von Yo no soy marinero, soy capitan (Gast)


Lesenswert?

Johannes S. schrieb:
> Humpen schrieb:
>> {mass == i;}
>
> ist ein Vergleich, keine Zuweisung...

Da müsste doch eine Warnung "Statement without effect" kommen, oder?

von Humpen (Gast)


Lesenswert?

Johannes S. schrieb:
> ist ein Vergleich, keine Zuweisung...

Dass ich das so durcheinander gebracht habe unglaublich. Danke.



Yo no soy marinero, soy capitan schrieb:
> Da müsste doch eine Warnung "Statement without effect" kommen, oder?

Nein der Compiler hat nichts ausgegeben.



Nils P. schrieb:
> @Humpen, schalte bei deinem Kompiler mal den Warning Level auf maximum.
> Dann passieren Dir solche Fehler nicht.

Ja das werde ich tun.

von Rolf Magnus (Gast)


Lesenswert?

Falls es gcc ist, sollte man mindestens mal -std=c++11 (oder welche 
Version man eben nutzen will) -pedantic -Wall -Wextra angeben.

von nfet (Gast)


Lesenswert?

Clang und MSVC meckern sofort, gcc nur mit -Wall

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.