Когда я запускаю следующий код ...
#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
Я получаю сообщение об ошибке "ошибка: ожидаемый инициализатор до 'KeyType'"
Сначала я подумал, что это может бытьсвязано с объявлением типа строки, поэтому я изменил его на следующее, чтобы увидеть, будет ли он работать ...
#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
, но я получил ошибку "ошибка: несколько типов в одном объявлении" я искалошибки для обеих этих ошибок и не нашли ничего, что помогает.Я просмотрел класс, чтобы убедиться, что у меня есть точки с запятой, где это необходимо, и, кажется, у меня есть все из них.
У меня нет файла реализации просто потому, что он мне не нужен, но я могв чем проблема?
Это просто класс для двоичного дерева поиска.Я работаю в CodeBlocks, используя компилятор GNU GCC.
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