Code Aufteilung und falsche Rückgabewerte
-
Guten Morgen,
ich versuche gerade, das Aufteilen des Codes in verschiedene Dateien richtig! zu verstehen. Dazu habe ich einfach ein Projekt angelegt in dem ich 3 Dateien habe.
main.cpp, foo.cpp, foo.hHier versuche ich eine Klasse zu definieren, initialisieren und die Werte auszulesen.
//foo.h class Foo { private: int foo_x; int foo_y; public: Foo(int x, int y); int get_x(); };//foo.cpp #include "foo.h" Foo::Foo(int x, int y) { int foo_x = x; int foo_y = y; } int Foo::get_x() { return foo_x; }//main.cpp #include <iostream> #include "foo.h" using namespace std; int main() { Foo foo(100, 200); cout<<foo.get_x()<<endl; return 1; }Nach meinem Verständnis müsste ich als Ausgabe "100" erhalten. Statdessen ist es aber immer "49".
Was habe ich hier falsch gemacht?
Danke und viele Grüße
Zeddy
-
Du erstellst hier zwei lokale Variablen.
Zeddy schrieb:
Foo::Foo(int x, int y) { int foo_x = x; int foo_y = y; }Foo::Foo(int x, int y) : foo_x(x), foo_y(y) { }
-
Hallo µ,
oh Mann ich sollte tatsächlich früher schlafen gehen.. hab mir den Code sicher 10 mal angeschaut. Bitte entschuldige.
So hats jetzt funktioniert, nur eine Frage. Stimmt die Aufteilung so? (Ich meine abgesehen davon, dass sie funktioniert. Ist sie auch Regelconform?)
Danke nochmal und viele Grüße
-
Zeddy schrieb:
Stimmt die Aufteilung so? (Ich meine abgesehen davon, dass sie funktioniert. Ist sie auch Regelconform?)
Wirkliche Regeln gibts da nicht - oder kaum. Du machst es aber jedenfalls so, wie man es normalerweise macht: Für jeden Header eine .cpp mit den zugehörigen Definitionen. Man fasst normalerweise nicht die Definitionen für zwei Header zusammen, und man spaltet normalerweise auch nicht die Definitionen für einen Header in zwei Sourcen auf.
-
Super!
Danke für die schnell Hilfe und noch ein schönes WE
-
Dir fehlen nur noch Include Guards für die Headerdatei
Siehe:
http://en.wikipedia.org/wiki/Include_guard
http://en.wikipedia.org/wiki/One_Definition_Rule