我正在为我的结构课做一个小项目,并且遇到了一个问题,即使 TA 也无法弄清楚。有人建议我在这里发布它,我可能会得到一些帮助。所以这里是:
概述: 我正在使用 g++ 编译一个项目,该项目包含许多头文件 (.h) 及其相应的实现 (.cpp) 文件。该项目涉及 3 个独立的结构,并在它们之间进行时间比较。正在实现和比较的结构是二进制最小堆、左堆和倾斜堆。最小堆实现已完成,并且正在编译。然而,现在我正在转向其他结构,我遇到了我假设(我知道)是编译器错误。
问题 我正在充实左派堆的存根文件,并且就编译器而言已经碰壁了。特别是我收到一个错误,内容如下:
leftHeap.cpp:15:1: error: ‘LeftistHeap’ does not name a type
代码 下面看一下相关代码:
左堆.h
#ifdef LEFTHEAP_H
#define LEFTHEAP_H
class LeftistHeap{
public:
int *root;
LeftistHeap();
~LeftistHeap();
};
#endif
左堆.cpp
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#include "leftHeap.h"
using namespace std;
//Constuctor
LeftistHeap::LeftistHeap(){
root = NULL;
}
包含 leftHeap.h 的唯一其他地方是 main.cpp
主文件
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdio.h>
#include <math.h>
#include "minHeap.h"
#include "leftHeap.h"
#include "skewHeap.h"
using namespace std;
int main(){
...
这是我正在使用的makefile:
生成文件
all: lab10
lab10: comparison.o minHeap.o leftHeap.o skewHeap.o
g++ comparison.o minHeap.o leftHeap.o skewHeap.o -o lab10
comparison.o: comparison.cpp
g++ -c comparison.cpp
minHeap.o: minHeap.h minHeap.cpp
g++ -c minHeap.h minHeap.cpp
leftHeap.o: leftHeap.h leftHeap.cpp
g++ -c leftHeap.h leftHeap.cpp
skewHeap.o: skewHeap.h skewHeap.cpp
g++ -c skewHeap.h skewHeap.cpp
clean:
rm lab10 *.o
为了更加彻底,我还尝试了一个更简约的 makefile
生成文件 (2)
test:
g++ minHeap.h leftHeap.h skewHeap.h comparison.cpp minHeap.cpp leftHeap.cpp skewHeap.cpp -o lab10
clean:
rm lab10 *.o
我希望这不是信息过载。如果有人对此有任何想法,请告诉我。我已经查看了此处的其他 g++“未命名类型”问题(以及一些完整的谷歌搜索页面),但没有发现任何可能导致此问题的原因。我有这种偷偷摸摸的怀疑,这可能是我忽略的一些简单的事情,但任何帮助将不胜感激。
谢谢!