2016-11-10 6 views
-1

Ich versuche, eine Verknüpfte Liste zu erstellen, um eine TXT-Datei herunterzuladen und die verknüpfte Liste zu verwenden, um die Datei Zeile für Zeile zu behandeln. Bei der Verarbeitung der heruntergeladenen verknüpften Liste werden Operationen wie z. B. ein Texteditor ausgeführt. Ich stoße jedoch auf einige Probleme. Es scheint, der "Knoten (Zeichenfolge Wert)" Abschnitt des Codes hat etwas falsch damit, obwohl die ursprüngliche Node() -Deklaration ohne Argumente übergeben wird. Ich bin nicht in der Lage, herauszufinden, was es ist.C++ Verknüpfte Liste

Node.h

class Node 
{ 
public: 
    Node(); 
    Node(string value); 
    void setNext(Node *nextNode); // Allows the user to set where the "next" pointer of a node points 

    friend class LinkedList; 
private: 
    string data; // Data box 
    Node* next; // Pointer box 
}; 

Node.cpp

# include <string> 
# include "Node.h" 

using namespace std; 

Node::Node() 
{ 
    data = ""; 
    next = NULL; 
} 

Node::Node(string value) 
{ 
    data = value; 
    next = NULL; 
} 

void Node::setNext(Node *nextNode) // Allows the user to set where the "next" pointer of a node points 
{ 
    this->next = nextNode; 
} 
+2

Bitte spezifischer als "einige Probleme" und "etwas nicht stimmt". Kompiliert es nicht? Stürzt es ab? Gibt es "0x3434" überall auf Ihrem Terminal aus? Ruft es die Polizei an und meldet, dass du verschwunden bist? – molbdnilo

+0

@molbdnilo, kann es nur zufällige Fragen zu SO posts? ;) – SergeyA

+0

Folgende Fehler sind gegeben: fehlender Typspezifizierer - int angenommen. Zeile: 17 'data': unknown override specifier Zeile: 17 – Blake

Antwort

2

Ihr #include <string> in Ihrer Header-Datei sein sollte, da es Ihnen den std::string Typen mit Ihren Methoden verwenden ist.

Da es nicht hinzuzufügen using namespace in Header-Dateien empfohlen (siehe this answer für weitere Informationen), Ihre String-Typen mit dem Namespace deklarieren: ändern Sie Ihre string value zu std::string value

Ihre Dateien wie folgt aussehen (kompilieren Test war mit GCC getan)

auch sollten Sie eine Include-Wache in der Header-Datei

Beispiel setzen:

// some_header_file.h 
#ifndef SOME_HEADER_FILE_H 
#define SOME_HEADER_FILE_H 
// your code 
#endif 

Node.h

#include <string> 

class Node 
{ 
public: 
    Node(); 
    Node(std::string value); 
    void setNext(Node *nextNode); // Allows the user to set where the "next" pointer of a node points 

    friend class LinkedList; 
private: 
    std::string data; // Data box 
    Node* next; // Pointer box 
}; 

Node.cpp

#include "Node.h" 
#include <cstddef> // For NULL 

Node::Node() 
{ 
    data = ""; 
    next = NULL; 
} 

Node::Node(std::string value) 
{ 
    data = value; 
    next = NULL; 
} 

void Node::setNext(Node *nextNode) // Allows the user to set where the "next" pointer of a node points 
{ 
    this->next = nextNode; 
} 
+0

[Oder vielleicht '#pragma einmal 'anstelle von Wachen] (http: // stackoverflow.com/questions/1143936/pragma-einmal-vs-include-guards) –

+0

Es schlägt vor, string ist keine Komponente der Std-Bibliothek. Auch ich habe bereits #ifndef NODE_H #define NODE_H und #endif .. sie sind nur nicht das, was ich verlange. – Blake

+0

*** Es schlägt vor, string ist keine Komponente der Std-Bibliothek. *** Haben Sie 'string' durch' std :: string' in der Kopf- und CPP-Datei ersetzt? – drescherjm