Probleme mit dem VS 2008
-
Hi!
Im Linux Compiler funkt der Code, aber wieso nicht im VS 2008 ?
Wo liegen hier die Probleme ?
Bekomme folgende Fehlermeldungen:run.cpp(108) : warning C4996: 'ctime': This function or variable may be unsafe. Consider using ctime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
c:\programme\microsoft visual studio 9.0\vc\include\time.inl(88): Siehe Deklaration von 'ctime'
run.cpp(143) : error C2533: 'ReverseText::{ctor}': Ergebnistyp für Konstruktoren nicht zulässig
run.cpp(185) : error C2264: 'ReverseText::ReverseText': Fehler in der Funktionsdefinition oder Funktionsdeklaration, Funktion nicht aufgerufenCode:
#include <iostream> #include <string> #include <time.h> #include <algorithm> using namespace std; class SomeText { public: virtual string getText() = 0; virtual ~SomeText(); }; SomeText::~SomeText() { } //-------------------------------------------- // Fixer Text class FixedText : public SomeText { string txt; public: FixedText(string s); virtual string getText(); }; FixedText::FixedText(string s) : txt(s) { } string FixedText::getText() { return txt; } //-------------------------------------------- // Dekorator - auf Länge l auffüllen/kürzen class FilledText : public SomeText { SomeText& st; int len; public: FilledText(SomeText& t, int l); virtual string getText(); }; FilledText::FilledText(SomeText& t, int l) : st(t), len(l) { } string FilledText::getText() { string s = st.getText(); int l = s.length(); if (l >= len) return s.substr(0, len); else return s + string(len-l, ' '); } //-------------------------------------------- // Dekorator - um N Stellen verschoben class ShiftedText : public SomeText { SomeText& st; unsigned int offset; public: ShiftedText(SomeText& t, unsigned int o); virtual string getText(); void setOffset(unsigned int o); }; ShiftedText::ShiftedText(SomeText& t, unsigned int o) : st(t), offset(o) { } string ShiftedText::getText() { string s = st.getText(); unsigned int o = offset % s.length(); return s.substr(offset) + s.substr(0, o); } void ShiftedText::setOffset(unsigned int o) { offset = o; } //-------------------------------------------- // Text mit aktuellem Datum und Uhrzeit class DateText : public SomeText { public: DateText(); virtual string getText(); }; DateText::DateText() { } string DateText::getText() { time_t now = time(0); string t = ctime(&now); // \n am ende entfernen return t.substr(0, t.length()-1); } //-------------------------------------------- // DekorText-Beginn class DekorText:public SomeText { string links; SomeText& mitte; string rechts; public: DekorText(const char*, SomeText&, const char*); virtual string getText(); }; DekorText::DekorText(const char* l, SomeText& m, const char* r) :links(l), mitte(m), rechts(r) { } string DekorText::getText() { return links + mitte.getText() + rechts; } //-------------------------------------------- class ReverseText:public SomeText { SomeText& text; public: ReverseText(SomeText&); virtual string getText(); } ReverseText::ReverseText(SomeText& s) :text(s) { } string ReverseText::getText() { string t = text.getText(); reverse(t.begin(), t.end()); return t; } void show(const char* what, SomeText& st, char delimiter = '\n') { DekorText dt("[[" , st , "]]"); cout << what << ":" << dt.getText() << delimiter; } void show60(ShiftedText& st) { for(int i=0; i < 60; i++) { st.setOffset(i); _sleep(1000); // Windows: _sleep(1000); show(" ", st, '\r'); cout.flush(); } cout << "\n"; } //-------------------------------------------- int main() { FixedText fix("Hello World"); show("fix", fix); FilledText filled(fix, 60); show("filled", filled); ShiftedText shifted(filled, 10); show("shifted 10", shifted); ReverseText rt(shifted); show("reverse", rt); DateText dt; DekorText ddt("#", dt, "#"); FilledText filleddate(ddt, 60); ShiftedText shifteddate(filleddate, 0); show60(shifteddate); system("pause"); }Bitte um Hilfe! Danke!
lg
-
hm... die Fehler sind mir ein Rätsel.
ich würde dir einfach mal raten statt Referenzen Zeiger zu verwenden,
auch wenn ich pessimistisch bin, dass das hilft.MfG DrakoXP
-
; am Ende der Klassendefinition von ReverseText vergessen.
-
Nach der Klassendeklaration fehlt in Zeile 140 ein Semikolon, das dürfte die Fehler beheben.
-
Arg, so dumm muss man sein

Danke!lg
-
EDIT:zu langsam..

Mich wundert es mehr, dass das mit einem anderen Compiler geht..

Oder hast du den Fehler nachträglich eingebaut?!
-
Wahrscheinlich einen Fehler nachträglich eingebaut

lg