C++ Error
-
Wo soll denn using raus ?
Unser Prof erklärt uns nichts .
Und beim lernen bin ich auf mich selber angewiesen .Drehe durch bei den vielen Codes ?
Welches rekursive ?
-
@Programmer33 using namespace ... niemals (niemals), also gar niemals vor einem include!
-
@Programmer33 egal ob Studium oder Ausbildung: Breymann der c++-Programmierer. Aktuell für c++17. Hoffe ich bekomme irgendwann provision
Da kannst dich bei sowas nicht auf das Unterrichtsmaterial verlassen. Man braucht extra was genaues zum nachschlagen...
-
@Programmer33 sagte in C++ Error:
Welches rekursive ?
#include "CScreen.h" // hier in dieser Datei "CScreen.h" soll // also die "CScreen.h" eingefügt werden?? /** * Dies Klasse repr‰sentiert einen Bereich von 80x24 "Punkten", * die als ein beliebiges Zeichen dargestellt werden kˆnnen. */ class CScreen { private:
Diese. Vorrausgesetzt dies ist ein Teil der Datei „CScreen.h“ was ich nur raten kann...
hth
Edit: include-guard hast du ja. Trotzdem unsinnig die Zeile...
-
oh man weiss auch nicht wie ich das gemacht habe .
Aus versehen wohl.
Aber auch nach beseitigen dieses Fehler : Immer noch errorWoran kann es liegen?
-
@Programmer33 ups, ich sehe gerade der Fehler war ja in der CRect...
-
habe auch die using namespace nach dem Include eingebaut ?
Iostream auch nach include ?
-
ja in der Rectangle wird hier gemeckert ?
Es erkennt das CScreen nicht ?void draw(CScreen& screen) const;
-
@Programmer33 Nehme erstmal in allen *.h das using komplett raus. Wenn es irgendwo gebraucht wird mach jeweils ein std:: vor...
Dann in allen *.cpp das using namespace unter dem letzten include. Oder nimm es auch raus und mach auch immer ein std:: vor (std::endl, std::cout etc)
-
und setze die Fehlermeldungen auch in code-tags...
-
das hat die fehler nur verdoppelt lol.
Mache sie jetzt wieder rein.
-
@Programmer33 Nein! Nochmal den Code mit Fehlermeldung in code-tags. Woher sollen wir wissen was gerade bei dir aktuell ist...
-
Description Resource Path Location Type make: *** [CScreen.o] Error 1 WS14 C/C++ Problem unknown type name 'CScreen' CRectangle.h /WS14 line 104 C/C++ Problem
Diese Zeile wird angezeigt :void draw(CScreen& screen) const;
Die ist auch nicht implementiert ?
Vielleicht liegt es daran lol
-
#include "CRectangle.h"
gehört nicht in CScreen.h. Wird nicht gebraucht.
-
@Programmer33 Bei mir funktioniert es nach den entsprechenden Änderungen. Alle usings in .h raus, using in .cpp unter den letzten include. vor ostream ein std:: und die CRectangle.h raus aus CScreen.h. Nur ein Warning wg. ungenutzeten Parameter. Die CPoint.cpp hab ich jetzt nicht probiert.
-
#include "CScreen.h" #include "CRectangle.h" #include "CPoint.h" int main() { CScreen scr; CRectangle rec; CPoint p; return 0; }
dirk@schleppi:~/develop/cpp/c-plusplus.net/tests> g++ -Wall -W --std=c++17 CScreen.cpp CRectangle.cpp CPoint.cpp main.cpp CRectangle.cpp: In Elementfunktion »void CRectangle::draw(CScreen&) const«: CRectangle.cpp:71:32: Warnung: unverwendeter Parameter »screen« [-Wunused-parameter] void CRectangle::draw(CScreen& screen) const ~~~~~~~~~^~~~~~ dirk@schleppi:~/develop/cpp/c-plusplus.net/tests>
-
Meinst du dass ich nur bei den Headern das using raus holen soll?
Oder bei allen ?
Ich habe gedacht vielleicht implementiere ich einfach die Methode um Fehler weg zu bekommen
/**
* Zeichnet das Rechteck in das ¸bergebene Bildschirmobjekt. Das heisst,
* es werden mit CScreen::setPoint die Werte aller "Punkte", die im
* Bereich des Rechtecks liegen, auf das F¸llzeichen des Rechtecks gesetzt.
*/
void draw(CScreen& screen) const;meine Idee :
void CRectangle::draw(CScreen& screen) const { CScreen::setPoint(CPoint point,'#') = screen; }
Ist die Idee wenigstens teilweise richtig ?
-
@Programmer33 ja, usings aus allen headern raus. und in den cpps unter dem letzten #include....*)
Ich habe nur ein Warning. Es ging erstmal nur darum das es übersetzt.... Dann weiter schauen.
Dein Code: ?!? Ähhmm... CScreen::setPoint() gibt nix zurück. Keine Referenz, nix. Da gibt's nix zum zuweisen. Ich empfehle nochmal den Breymann. Das ist kein Hobby, das willst Du in Zukunft als Beruf machen...
Edit: Damit meine ich das using namespace... nach unten verschieben, unter dem letzten #include. in allen cpps. Und auf jden Fall aus allen *.h raus.
-
@Programmer33 Und das Warning ist in Ordnung wenn die Funktion noch leer ist. Überhaupt kein Problem.
Mach die Änderungen wie oben beschrieben.
-
Sobald ich das using namespace aus den Headern raus nehme:
Description Resource Path Location Type 'CPoint' does not refer to a value CRectangle.cpp /WS14 line 80 C/C++ Problem call to non-static member function without an object argument CRectangle.cpp /WS14 line 80 C/C++ Problem make: *** [CRectangle.o] Error 1 WS14 C/C++ Problem Return has value, in function returning void CRectangle.cpp /WS14 line 80 Code Analysis Problem unknown type name 'ostream'; did you mean 'std::ostream'? CRectangle.h /WS14 line 110 C/C++ Problem unknown type name 'ostream'; did you mean 'std::ostream'? CRectangle.h /WS14 line 112 C/C++ Problem 'std::ostream' declared here WS14 line 147, external location: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/iosfwd C/C++ Problem declared here CPoint.h /WS14 line 18 C/C++ Problem
Das mit dem ostream bekomme ich ja mit std:: weg aber die anderen ?
Komisch