2010-11-28 3 views
0

Wenn ich den folgenden Code ...C++ „Fehler: mehrere Typen in einer Erklärung“ und „Fehler: erwartet initializer vor‚KeyType‘“

#ifndef KEYEDITEM_H_INCLUDED 
#define KEYEDITEM_H_INCLUDED 

#include <string> 

typedef std::string KeyType; 

class KeyedItem { 
    public: 
     KeyedItem() {} 
     KeyedItem(const KeyType& keyValue) : searchKey(keyValue) {} 
     KeyType getKey() const 
     { return searchKey; 
     } 

    private: 
     KeyType searchKey; }; 

#endif // KEYEDITEM_H_INCLUDED 

ich eine Fehlermeldung „Fehler: erwartet initializer vor ‚KeyType‘“

ich zuerst dachte, dass dies auf die Deklaration Typ zusammenhängen könnte die Zeichenfolge so habe ich es auf folgendes zu sehen, ob es ...

#ifndef KEYEDITEM_H_INCLUDED 
#define KEYEDITEM_H_INCLUDED 

#include <string> 
//typedef std::string KeyType; 

class KeyedItem 
{ 
    public: 
     KeyedItem() {} 
     KeyedItem(const std::string& keyValue) : searchKey(keyValue) {} 
     std::string getKey() const 
     { return searchKey; 
     } 

    private: 
     std::string searchKey; 
}; 

#endif // KEYEDITEM_H_INCLUDED 

aber ich habe funktionieren würde, der Fehler "Fehler: mehrere Typen in einer Deklaration "Ich habe nach Fehlern für beide Fehler gesucht und nichts gefunden, was hilft. Ich bin über die Klasse gegangen, um sicherzustellen, dass ich Semikolons habe, wo sie gebraucht werden, und ich habe anscheinend alle.

Ich habe keine Implementierungsdatei, nur weil ich keine brauchte, aber könnte das das Problem sein?

Dies ist nur eine Klasse für einen binären Suchbaum. Ich arbeite in CodeBlocks mit dem GNU GCC Compiler.

TreeNode.h

#ifndef TREENODE_H_INCLUDED 
#define TREENODE_H_INCLUDED 

#include "KeyedItem.h" 

typedef KeyedItem TreeItemType; 

class TreeNode 
{ 
    private: 
     TreeNode() {} 
     TreeNode(const TreeItemType& nodeItem, 
       TreeNode *left = NULL, 
       TreeNode *right = NULL) : item(nodeItem), leftChildPtr(left), rightChildPtr(right) {} 

     TreeItemType item; 
     TreeNode *leftChildPtr, *rightChildPtr; 

     friend class BinarySearchTree; 
}; 

#endif // TREENODE_H_INCLUDED 
+0

Ist das alles Ihr Code? Bezieht sich etwas anderes auf diesen Code? Wenn ich nur Ihr erstes Snippet kopiere und einfüge und es eine 'main' Funktion kompiliere, die ein' KeyedItem' verwendet, kompiliert sich mein Code gut. – birryree

+0

Nein, dies ist nur die KeyedItem-Klasse. Ich habe die "KeyedItem.h" in einer anderen Überschrift namens "TreeNode.h" und "TreeNode.h" ist in einer anderen Überschrift namens "BinarySearchTree.h" enthalten – 7ogan

+0

Ich habe es gelöst. Es stellte sich heraus, dass ich einen Header in meinem Haupt fehlt. – 7ogan

Antwort

0

Gelöst ... Es stellte sich heraus, dass ich ein Header enthalten in meinem Haupt fehlt.

1

müssen Sie mit g ++ kompilieren gcc nicht