dev c++ und fehlermeldung
-
n'Abend zusammen
habe gestern den dev c++ compiler gezogen um ihn mal auszuprobieren.
nun bekomme ich einige fehlermeldungen(warnungen) zu einem programm, das mit
dem visual c++ ohne probleme übersetzt wurde.
weis eigentlich nicht so genau was die meldungen bedeuten?[Warning] no newline at end of file ?
und bei diesem code
class print { private: std::ostream out; public: print(std::ostream& o): out(o){} //<- fehler bezieht sich auf diese // zeile templatete<typename Key, typename Value> void operator()(const std::pair<Key,Value>& r) { out<< r.first << ' ' << r.second; } };
erhalte ich diese meldungen
/Dev-Cpp/include/c++/bits/ios_base.h E:\Eigene Dateien\Arbeitszeit\C
In copy constructor421 C:\Dev-Cpp\include\c++\bits\ios_base.h
`std::ios_base::ios_base(const11 E:\Eigene Dateien\Arbeitszeit\map_functor.h
within this contextkönnt ihr mir helfen?
-
hallo elwida,
die Fehlermeldungen sehen nicht vollstaendig aus:
"within this context" bezieht sich auf die Stelle in Deinem Code, an dem mit "std::ios_base::ios_base(const..." was nicht stimmt (click oder Doppelclick fuehrt Dich an die Stelle)
Schau Dir die Meldungen mal im "Kompiler Log" (Karteireiter) an, da steht aller Vorraussicht nach mehr drin.solong SF
-
bei mir werden auch immer nur sehr unvollständige compilerfehler ausgedruckt und der compilerlog ist doch recht unübersichtlich. hoffentlich fixen die das ma und bringen ma endlich ne neue stable raus, die ganzen betas gehn einem langsam aufen sack.
-
/edit: alles weg
-
hallo
sorry das ich mich so spät melde
hier die komplette fehlermeldeung:Building Makefile: "D:\Eigene Dateien\EigeneC++\Arbeitszeit\Makefile.win"
Führt make clean aus
rm -f arbeitszeitmain.o datum.o io_arbeitsstunden.o io_datum.o Arbeitszeit.exeg++.exe -c arbeitszeitmain.cpp -o arbeitszeitmain.o -I"C:/Dev-Cpp/include/c++" -I"C:/Dev-Cpp/include/c++/mingw32" -I"C:/Dev-Cpp/include/c++/backward" -I"C:/Dev-Cpp/include" -D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_CONSOLE -D_MBCS
In file included from arbeitszeitmain.cpp:7:
C:/Dev-Cpp/include/c++/bits/ios_base.h: In copy constructor
std::basic\_ios<char, std::char\_traits<char> >::basic_ios(const std::basic\_ios<char, std::char\_traits<char> >&)': C:/Dev-Cpp/include/c++/bits/ios\_base.h:421:
std::ios_base::ios_base(const
std::ios_base&)' is private
map_functor.h:11: within this contextmake.exe: *** [arbeitszeitmain.o] Error 1
Ausführung beendet
übrigens der grund für diese Warnung ([Warning] no newline at end of file ? )
habe ich selbst herausgefunden.
und zwar hatte ich in einer headerdatei zwischen dem }; und einem #endif einige leerzeilen eingfügt.
damit war der compiler warscheinlich nicht so recht einverstanden.gruß elwida
-
hallo
also, das besagt, dass das Argument der Printanweisung,
print(std::ostream& o): out(o){}
also die Referenz auf einen ostream einen Kopierkonstruktor braucht,
der aus der Klasse ios_base (C:/Dev-Cpp/include/c++/bits/ios_base.h:421)//50. Copy constructor and assignment operator of ios_base private: ios_base(const ios_base&);
aber eben privat ist.
Falls Du von ios_base eine erbende Klasse hast, must Dir dort den Kopierkonstruktor
anlegen.Andere Ueberlegung: musst Du unbedingt eine Referenz uebergeben, oder tuts dort auch
das Original (weiss nicht was out(std::ostream) macht oder braucht)?Hoff's hilft
SF
-
hallo Segmentation Faulter
die class print dient dazu die opjekte in einer multimap auszugeben.
for_each(mymap.begin(),mymap.end(),print(cout));
um die multimap aber nicht nur auf dem bilschirm auszugeben sondern
in eine datei zu leiten, bekommt print einen filestream mitgegeben.
z.B. so:ofstream out; for_each(mymap.begin(),mymap.end(),print(out));
habe die sache jetzt mit zeigern gelöst.
gruß elwida