2010-12-30 24 views
1

Ich implementierte einen String und gab die Definition in .h-Datei. Der Code in String.h ist der folgende:Fehler: erwartet ')' vor '<' Token |

#include<list> 
class String 
{ 
    public: 
    String();//Constructor 
    String(char * copy);//For converting CString to String 
    const char *c_str(const String &copy);//For converting String to Cstring 
    String(list<char> &copy);//Copying chars from list 
    //Safety members 
    ~String(); 
    String(const String &copy); 
    void operator = (const String &copy); 
    protected: 
    int length; 
    char *entries; 
}; 

Der Fehler wird in dem Betreff erwähnt. Was ist es, dem ich nicht folge?

+1

Ihr 'Operator =' falsch delcared. Es sollte einen Verweis auf self zurückgeben. –

+2

Wer würde eine Zeichenfolge in einer Liste speichern? Ändert die Zeichenfolge (char * copy) wirklich die Zeichenfolge, von der sie kopiert wird? Und warum ist diese Memberfunktion in eine C-Zeichenfolge umzuwandeln, die ein Argument annimmt? Wer hat dir so einen Kopf gegeben? Es ist urkomisch. – sbi

Antwort

7

Sie sind ein std:: vor list<char> fehlen:

String(std::list<char> &copy); 
+1

+1 für rosa floyd. –

+0

@Dhruv Gairola - lol. Ich frage mich, wie viel von seiner 11.1K Wiederholung von der Verwendung dieses Album-Covers als sein Symbol ist. –

+0

Vielen Dank für den Kopf! Rest alles funktionierte gut :) – Cipher

1

Fest mehr Ihre Probleme auf einmal:

#include <list> 

class String 
{ 
public: 
String(); 
String(const String &c); 
String(const char * c); 
String(std::list<char> c); // No idea why someone would have this constructor, but it was included in the original ... 
~String(); 

String& operator = (const String &c); 

const char *c_str(); 
private: 
unsigned int length; 
char* entries; 
}; 
+0

Ich benutzte den Konstruktor String :: String (Std :: Liste ©);, denn wenn die Zeichenfolge gelesen wird, würde ich sie in einer Liste speichern und anschließend initialisieren Zeichenkette durch die Zeichen in der Liste – Cipher

+1

Es gibt viel bessere Möglichkeiten, das zu tun.Sie könnten einen Vektor verwenden, um die Zeichen zu speichern, oder noch besser, lesen Sie aus dem Istream direkt in Ihre Zeichenklasse, oder noch besser, verwenden Sie die Std: : string class (es sei denn, es handelt sich um eine Hausaufgabe, die Sie selbst schreiben müssen.) –

+0

Ja, ich hole die Zeichen in der Liste mit einer Funktion read_in (istream & input) und verwende die Liste für den temporären Speicher wie eine Aufgabe, da ich das alleine mache, nachdem ich aus einem Data Structures-Buch herausgegangen bin. Ich bin kein IT-Typ :) – Cipher

Verwandte Themen