warning C4552 und error C2143



  • Hi,
    habe die folgenden Probs

    c:\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.


Anmelden zum Antworten