C ++“错误:一个声明中的多个类型”和“错误:'KeyType'之前的预期初始化程序”

时间:2010-11-28 04:20:05

标签: c++ compiler-errors codeblocks

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

#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中工作。

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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

解决了......结果我错过了我主要的标题。