warning C4552 und error C2143
-
Hi,
habe die folgenden Probsc:\uebung\stringklasse\string.cpp(13) : warning C4552: '+' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
c:\uebung\stringklasse\string.cpp(82) : error C2143: Syntaxfehler : Fehlendes ']' vor ';'
c:\uebung\stringklasse\string.cpp(82) : error C2143: Syntaxfehler : Fehlendes ';' vor ']'
c:\uebung\stringklasse\string.cpp(83) : error C2143: Syntaxfehler : Fehlendes ')' vor ';'
c:\uebung\stringklasse\string.cpp(83) : error C2059: Syntaxfehler : ')'Ich poste mal meinen ganzen Quellcode
#ifndef STRING_H #define STRING_H #include <ostream.h> #include <istream.h> #define FWDBUFFER 15; #define INPBUFFER 200; class String { private: char *string; unsigned long len; unsigned long bufsize; void replace(const char*); public: String(void); String(const char*); String(const char); String(const String&); ~String(void); friend ostream& operator<<(ostream& ostr , const String& s); friend istream& operator>>(istream&, String&); const String &operator=(const char*); const String &operator=(const char); const String &operator=(const String&); }; #endif
#include <C:\Uebung\stringklasse\Jansstring.h> #include <iostream> #include <assert.h> void String::replace(const char *s) { if (string) delete[](string); len=strlen(s); bufsize=FWDBUFFER+len+1; string = new char[bufsize]; assert(string!=0); strcpy(string,s); } String::String(void) { len=0; bufsize=0; string=0; } String::String(const char *s) { string = 0; replace(s); } String::String (const char c) { string = 0; char s[2]; s[0]= c; s[1]= 0; replace(s); } String::String(const String &s) { string = 0; replace(s.string); } String::~String() { if(string) delete[](string); } const String &String::operator=(const String &s) { replace(s.string); return (*this); } const String &String::operator =(const char *s) { replace(s); return (*this); } const String &String::operator=(const char c) { char s[2]; s[0]=c; s[1]=0; replace(s); return(*this); } ostream& operator<<(ostream &ostr ,const String &s) { if (s.len) ostr<<s.string; return(ostr); } istream& operator>>(istream &istr, String &s) { char buf [INPBUFFER+1]; istr.getline(buf,INPBUFFER); s.replace(buf); return(istr); } main() { return 0; }
Danke schon jetzt
-
Bei den Definedirektiven muss das Semikolon weg. Benutz lieber gleich Konstanten statt Präprozessorsymbolen.