g ++“没有命名类型”错误

时间:2013-04-09 18:39:42

标签: c++ compiler-errors makefile g++ header-files

我正在为我的结构类开发一个小项目,并且遇到一个问题,即使TA无法弄清楚。有人建议我在这里发帖,我可能会得到一些帮助。所以这就是:

概述: 我正在使用g ++编译一个包含许多头(.h)文件及其相应实现(.cpp)文件的项目。该项目涉及3个独立的结构,并在它们之间进行时序比较。正在实现和比较的结构是二进制最小堆,左侧堆和倾斜堆。最小堆实现已完成,编译正常。但是现在我正在转向其他结构,我正在遇到我认为(我知道)编译器错误。

问题 我正在充实左派堆的存根文件,并且就编译器而言已经遇到了问题。特别是我收到的错误是:

leftHeap.cpp:15:1: error: ‘LeftistHeap’ does not name a type

代码 以下是相关代码:

leftHeap.h

#ifdef LEFTHEAP_H
#define LEFTHEAP_H

class LeftistHeap{

 public:
  int *root;
  LeftistHeap();
  ~LeftistHeap();
};

#endif

leftHeap.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

的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

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 ++“没有命名类型”的问题(以及一些谷歌搜索的完整页面),但没有发现任何可能导致此问题的内容。我有这种偷偷摸摸的怀疑,这可能是我忽略的一些简单,但任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:7)

仔细看看你的包含守卫:#ifdef LEFTHEAP_H

答案 1 :(得分:2)

这只是一个错字(假设它被准确转录):

#ifdef LEFTHEAP_H
#define LEFTHEAP_H
leftHeap.h中的

应为#ifndef

#ifndef LEFTHEAP_H
#define LEFTHEAP_H