C ++ «ошибка: несколько типов в одном объявлении» и «ошибка: ожидаемый инициализатор до 'KeyType'" - PullRequest
0 голосов
/ 28 ноября 2010

Когда я запускаю следующий код ...

#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

Ответы [ 2 ]

1 голос
/ 28 ноября 2010

вам нужно скомпилировать с g ++, а не с gcc

0 голосов
/ 28 ноября 2010

Решено ... Оказывается, мне не хватало заголовка, включенного в мою основную.

...