[Erledigt] OOP wie Objekt einer Klasse weitergeben
-
Hey Leute,
ich habe bisher nur mit Java programmiert, nehme mich aber gerade C++ an.
Nun stehe ich vor dem Problem, dass ich in meinem Code ein Objekt einer Klasse weitergeben möchte. In Java war das kein Problem, nur in C++ bekomme ich es gerade nicht so ganz hin.Log.h void schreiben(string); Log.cpp void Log::schreiben(string string) {...}Temperatur.h bool checkTemperatur(Log); Temperatur.cpp bool Temperatur::checkTemperatur(Log log) { log.schreiben("test"); }Main.cpp #include "Log.h" #include "Temperatur.h" Temperatur temperatur; Log log; log.init(); temperatur.checkTemperatur(log);In Java habe ich die Situation nachprogrammiert und es hat einwandfrei funktioniert. Könnt ihr mir weiterhelfen?

Danke schonmal
-
Und an was scheitert dein Vorhaben?
-
Compiler gibt einen Fehler aus:
error:'std::ios_base::ios_base(const std::ios_base&)' is privateBeide Methoden schreiben() und checkTemperatur() sind jedoch im Header als Public deklariert.
-
Du übergibst nicht DAS log, sondern ein Kopie von log.
Das ist zwar nicht unbedingt falsch, aber wahrscheinlich ist dein Kopie-Ctor falsch.
Wahrscheinlich sinnvoller wäre aberbool checkTemperatur(Log& log);
-
Ja es soll genau der selbe Log, der in Main.cpp initialisiert wurde, auch weitergegeben werden.
@Jockelx muss ich dann auch im Temperatur.h einen include von Log vornehmen?
-
Nee, Forward-Deklaration reicht.
-
Danke funktioniert! Jedoch musste ich das include einfügen, ansonsten spuckt er wieder einen Fehler aus.
-
Das bezweifel ich, das es daran liegt. Vielleicht hast du das log.h nicht in Temperatur.cpp inkludiert?
-
Ich mache die Includes immer in den Header, ist das soweit richtig? Denn dann habe ich es in Temperatur.cpp drin.
-
ghorki schrieb:
Ich mache die Includes immer in den Header, ist das soweit richtig? Denn dann habe ich es in Temperatur.cpp drin.
Nein, Includes nur da, wo du sie auch wirklich brauchst.
D.h. wenn du etwas aus einer Header Datei in deiner CPP Datei brauchst, dann inkludier sie auch in der CPP Datei. Wenn du sie im Header nicht brauchst, wieso sollte sie dann dort inkludiert werden?Das schafft nur viele Compileabhängigkeiten und macht den ganzen Vorgang unnötig langsam.