Suchergebnisse
Suchergebnisse 1-20 von insgesamt 110.
OK, hab den Fehler selber gefunden: Scheinbar sind member-templates nur dann erlaubt, wenn die Klasse keine virtuellen Funktionen hat. Dieser Artikel über die Feinheiten von C++ ist sehr zu empfehlen: http://www.glenmccl.com/lang.htm
:sleep: Missverständniss! :sleep: (kommt mir zumindest so vor. Ich sage ja: man verändert den Wert nicht->also deklariert man in const->also KANN man ihn nicht mehr verändern)
Wieso? Es hat die Wirkung, dass man den Rückgabewert nicht verändern kann. Das ist doch schön, da man es (in diesem Fall) normalerweise sowieso nicht tut. ^_^ Das Haar will ich gespalten sehn! ^_^
Ich skizziere die Situation: Quellcode 1 2 3 4 5 6 7 8 template <typename TType,typename TListElement=CListElement<TType> > class CList { public: inline CList(void); inline CList(const CList<TType,TListElement>& ListObject); inline ~CList(void); }; Quellcode 1 2 3 4 5 6 7 8 9 10 11 template <typename TType,bool bAutoDelete=true,bool bAllowNullPointers=false> class CPointerList: public CList<TType*,CListElementPointer<TType,bAutoDelete> > { public: inline CPointerList(void); //copy pointers if bA...
Also die Frage hat sich erledigt.
Ich glaube du hast mich missverstanden. Egal: Ein Template steht im Header. Es beinhaltet keinen ausführbaren Code. Logisch, dass man es nicht exportieren kann. Meine Frage aber ist: Hat jemand Erfahrungen damit, ob es Speicherzugriffsprobleme geben kann, wenn eine exportierte Klasse eine Template-Klasse beerbt?
Hallo Ich habe ne DLL. Sie exportiert u.a. Klassen, die ein Listentemplate beerben. Irgendwie habe ich das Gefühl, dass das Probleme macht. Es kracht andauernd: (Zugriffsverletzungen). Kann es sein, dass man eine Inline-Template-Klasse in ner DLL nicht beerben darf? Vielleicht hat jemand Erfahrung zu meinem Prob.
Hmm. *.inl und *.tpl? Was ist das? Ich möchte auf dem Laufenden sein. Wo kann man was darüber lesen?
Mann Mann. Aber das kompliziert die Sache natürlich! Ich habe mir ne File-Klasse geschrieben, die Teil ner komplexeren Vererbungs-/Abhängigkeiten-Hierarchie ist. Sie kapselt fstream, und wird aus ner DLL exportiert. Dann gibts noch Stream Manager-Klassen, .... also alles in allem nen recht komplexes System mit aufwendiger Vererbung (viel Late Binding). Sch----! Heißt das dann, dass ich mein System nicht mit fstream machen kann? Das darf doch nicht war sein!
Also, ich hab noch was rausgefunden: Es kommt scheinbar auf den Kontext an, aus dem ich die Funktionen aufrufe: Wenn ich den fstream in der DLL (in der die Kapselung von fstream ist) close, schlägts fehl, wenn ich ihn aus der aufrufenden Exe aufrufe, klappt alles. Hat das vielleicht damit zu tun, dass fstream ne Template-Klasse ist?
Hmm. Danke für die Tips. Zitat 1. Tipp: Warum pointer? 2. Tipp: Guck dir mal genau an ob Open klappt, das mit deinen Pointern riecht mach Murks. 3. Tipp: Guck dir mal genau an was "fail" macht. 1. Warum nicht? Ich habe sicher keinen Pointer-Fehler, sondern ein Problem mit fstream 2. Ich habs noch mal genau überprüft: Alle aufgerufenen Methoden von fstream klappen, fstream::close ist die erste Methode, die fehlschlägt (ich kanns selber kaum glauben) 3. Hmm. Alle Infos die ich dazu fand waren nich...
Weiß keiner, was das bedeutet, wenn das failbit nach dem closen gesetzt ist? Kann man noch irgendwie genauere Infos kriegen, woran genau es scheitert? In der den Doks steht nur, z.B.: Zitat ios_base::failbit a nonfatal error has occurred Aber das bringt einem bei der Fehlersuche ja fast nix...
Ja nun, das ist doch bloß so ne art pseudo-code (ich kann hier nicht ganze Klassendefinitionen posten, das liest sich kein Mensch mer durch), natürlich prüfe ich auch, ob open und write klappt - das tut es. Das befremdliche ist ja auch, dass nur close fehlschlägt.
Hallo! Also. Ich öffne einen fstream, schreibe was hinein (bis dahin alles fstream::good), schließe mit fstream::close und dann ist fstream::fail()==true (aber kein anderes fehlerbit gesetzt), und die Datei ist leer. Bischen Code: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 fstream* m_pFStream=new fstream(); m_pFStream->open(*m_pStringPath,ios::out); m_pFStream->write(String.GetACString(),String.GetUILength()); m_pFStream->put ('\n'); m_pFStream->clos...
Eigentlich unvernünftig. Man könnte sich doch so was vorstellen. Danke für die Antworten.
Hallo Ich will, mit zwei Objekten der Klasse fstream in die gleiche Datei schreiben. Wenn ich fstream::close() aufrufe, gibt aber fstream::fail() true zurück. Warum? Ist es etwa verboten mit 2 streams auf die selbe datei zu schreiben?
Danke. Zitat Why is 6 afraid of 7? Because 7 8 9 :-D :-D :-D Find ich ne geile Signatur.
Hey, thanks. So klappts. Aber warum muss ich diesen komischen cast verwenden? Warum geht das nicht normal? ??? ??? ???
hmm. Auf DevCpp umsteigen.
Hallo Ich hab mir ne Hierarchie überlegt um mit Streams zu arbeiten. Aber da gibst komische Sachen beim casting (ich blicks nicht). C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //abstract base class class CStream { virtual void Func1(...)=0; }; class CReportStream: virtual CStream { virtual void Func2(...)=0; }; class CStreamManager: public sgCList<CStream> { //führt Func1 bei allen Objekten durch: Func1(...); }; class CReportStreamManager: public CStreamManager { //...