0

当我运行以下代码时...

#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

但我收到错误“错误:一个声明中的多种类型”我已经为这两个错误查找错误,但没有发现任何帮助。我已经复习了这门课,以确保我在需要的地方有分号,而且我似乎都有。

我没有实现文件仅仅是因为我不需要,但这可能是问题吗?

这只是二叉搜索树的一个类。我正在使用 GNU GCC 编译器在 CodeBlocks 中工作。

树节点.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
4

2 回答 2

1

你需要用 g++ 编译而不是 gcc

于 2010-11-28T04:37:28.973 回答
0

解决了...原来我的主要内容中缺少标题包含。

于 2010-11-28T05:07:16.417 回答