Gateway_man Geschrieben 14. April 2011 Geschrieben 14. April 2011 Guten Abend, ich steh hier gerade ein wenig auf dem Schlauch bei einer Testklasse welche Auto heißt. Das Header file sieht wie folgt aus: #include "stdafx.h" #include <string> #include <iostream> using namespace std; enum company{mercedes,bmw,audi,vw}; class Auto { public: string name; company hersteller; private: bool engine_running; bool driving; public: Auto(company Hersteller, string Name); ~Auto(); void Start_Motor(); void Fahre(); void Stop(); void Stop_Motor(); bool isMotor_started(); bool isDriving(); }; Das Source file sieht wie folgt aus : #include "Auto.h" void Auto::Fahre(){ if (isMotor_started() && !isDriving()) { driving = true; cout << "Das Auto setzt sich in Bewegung!" << endl; } else { cout << "Entweder ist der Motor nicht gestartet oder das Auto fährt bereits!" << endl; } } void Auto::Start_Motor(){ if (!engine_running) { engine_running = true; cout << "Der Motor wurde erfolgreich gestartet!" << endl; } else { cout << "Der Motor ist bereits gestartet!" << endl; } } void Auto::Stop(){ if (isDriving()) { driving = false; cout << "Das Auto hat gestoppt!" << endl; } else { cout << "Das Auto fährt nicht!" << endl; } } void Auto::Stop_Motor(){ if (engine_running) { engine_running = false; cout << "Der Motor wurde erfolgreich gestoppt!" << endl; } else { cout << "Der Motor läuft nicht!" << endl; } } bool Auto::isDriving(){ return driving; } bool Auto::isMotor_started(){ return engine_running; } Auto::Auto(company Hersteller,string Name){ hersteller = Hersteller; name = Name; } Der Fehler welcher mir von VS 2010 ausgegeben wird: Warnung 1 warning C4627: "#include "Auto.h"": Wird bei der Suche nach Verwendung des vorkompilierten Headers übersprungen. Fehler 2 error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "StdAfx.h"" einzufügen? Ich weiß es wird wieder irgend ein ganz einfacher Syntax Fehler sein, allerdings finde ich diesen nicht. Steh grad wirklich auf der Leitung. Gebt mir nen stups . lg Gateway Zitieren
Hexagon Geschrieben 14. April 2011 Geschrieben 14. April 2011 Tach. #include "stdafx.h" Lieber in die cpp? Zitieren
Gateway_man Geschrieben 14. April 2011 Autor Geschrieben 14. April 2011 (bearbeitet) Du meinst in die Auto.cpp? Das hatte ich schon probiert. Selbiges Ergebniss. Habs grad nochmal versucht, da haut er mir alles um die Ohren siehe screenshot. Bearbeitet 14. April 2011 von Gateway_man Zitieren
Hexagon Geschrieben 14. April 2011 Geschrieben 14. April 2011 Okay... "using namespace std;" aus der Header-Datei raus und in die cpp. Zitieren
Gateway_man Geschrieben 14. April 2011 Autor Geschrieben 14. April 2011 Du bist mein Held . Jedoch verstehe ich es nicht denn wenn ich das include auf das Header File mache kopiert der Präprozessor doch den Inhalt des Headers und erstetzt in mit der entsprechenden include Zeile sprich er kopiert auch den using Befehl in die cpp Datei oder hab ich da was Falsch verstanden? lg Gateway Zitieren
Hexagon Geschrieben 14. April 2011 Geschrieben 14. April 2011 Ganz ehrlich: Ich weiß nur das man das so machen sollte. Warum? Da frag lieber mal Klotzkopp... Zitieren
Klotzkopp Geschrieben 15. April 2011 Geschrieben 15. April 2011 Die Includedirektive für den vorkompilierten Header (normalerweise stdafx.h) gehört in die .cpp-Datei, und sie muss die erste Includedirektive in der Datei sein. Alle Includedirektiven, die davor stehen, ignoriert der Compiler. Und Hexagon hat Recht: using-Direktiven gehören nicht in Headerdateien. Ansonsten kann sich das Verhalten einer .cpp-Datei komplett ändern, wenn man einen zusätzlichen Header einbindet, weil plötzlich ganz andere Funktionen in die Überladungsauflösung einbezogen werden. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.