C++ 无法创建unorderedLinkedList类型的对象

C++ 无法创建unorderedLinkedList类型的对象,c++,undeclared-identifier,C++,Undeclared Identifier,我有两个.h文件,基类是linkedListType,派生类是unorderedLinkedList。由于某些原因,它不允许我从我的unorderedLinkedList类创建对象。我在整个程序中也使用模板 #包括 #包括“unorderedLinkedList.h” 使用名称空间std; int main() { 无序链接列表,子列表; int-num; 库特数; } #pragma一次 #定义无序链接列表 #ifndef无序链接列表 #包括“linkedList.h” #包括 使用名称空间

我有两个
.h
文件,基类是
linkedListType
,派生类是
unorderedLinkedList
。由于某些原因,它不允许我从我的
unorderedLinkedList
类创建对象。我在整个程序中也使用模板

#包括
#包括“unorderedLinkedList.h”
使用名称空间std;
int main()
{
无序链接列表,子列表;
int-num;
库特数;
}
#pragma一次
#定义无序链接列表
#ifndef无序链接列表
#包括“linkedList.h”
#包括
使用名称空间std;
//创建类类型unorderedLinkedList
模板
类unorderedLinkedList:公共linkedListType
{
公众:
布尔搜索(常量类型和搜索项)常量;
//函数确定搜索项是否在列表中
void insertFirst(常量类型和newItem);
};
#恩迪夫
#pragma一次
#定义LINKEDLISTTYPE\u H
#ifndef链接列表类型\u H
#包括
#包括
使用名称空间std;
模板
类linkedListType
{
公众:
无效分区(linkedListType和子列表);
//除名表
常量linkedListType&运算符=(常量linkedListType&);
//重载赋值运算符。
void initializeList();
};
#恩迪夫

在这两个头文件中,您的
#define
#ifndef
语句顺序错误

在每个文件中,您都要定义保护值,然后检查是否定义了保护值,即是否定义了保护值,因此将跳过头文件的全部内容

仅当尚未定义保护值时,才需要定义保护值:

\ifndef无序链接列表\u H
#定义无序链接列表
...
#恩迪夫
\ifndef LINKEDLISTTYPE\u H
#定义LINKEDLISTTYPE\u H
...
#恩迪夫

如上所述,在定义include guard之前,您需要检查它是否已定义,否则它将永远不会包含在第一位

此外,还应使用#pragma once(如果支持)或#ifndef#define-guard。没有必要同时使用两者

再次重申,

-删除#pragma一次

-更改ifndef/define的顺序

\ifndef无序链接列表\u H
#定义无序链接列表
...
#恩迪夫
#ifndef链接列表类型\u H
#定义LINKEDLISTTYPE\u H
...
#恩迪夫
首先定义无序链接列表,然后检查它是否未定义。当然,它实际上是被定义的——你刚刚在上面一行定义了它。因此,跳过整个标题。
#pragma once
#define UNORDEREDLINKEDLIST_H
#ifndef UNORDEREDLINKEDLIST_H
#include "linkedList.h"
#include <iostream>
using namespace std;

//creates class type unorderedLinkedList
template <class Type>
class unorderedLinkedList : public linkedListType<Type>
{
public:
    bool search(const Type& searchItem) const;
    //function to determine wether searchItem is in the list
    void insertFirst(const Type& newItem);
};

#endif