【问题标题】:g++ "does not name a type" errorg ++“没有命名类型”错误
【发布时间】:2013-04-09 18:39:42
【问题描述】:

我正在为我的结构课做一个小项目,并且遇到了一个问题,即使 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(){
...

这是我正在使用的生成文件:

制作文件

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    仔细查看您的包含保护:#ifdef LEFTHEAP_H

    【讨论】:

    • 太棒了!我知道这很简单... 发布该帖子比解决问题花费的时间要长得多,但它已经完成了!谢谢!
    【解决方案2】:

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

    #ifdef LEFTHEAP_H
    #define LEFTHEAP_H
    

    在leftHeap.h中应该是#ifndef

    #ifndef LEFTHEAP_H
    #define LEFTHEAP_H
    

    【讨论】:

    • 就是这样!哇你们真快,我将不得不更频繁地开始发布(并停止潜伏)。
    猜你喜欢
    • 1970-01-01
    • 2011-12-10
    • 2013-09-09
    • 2015-12-01
    • 2014-12-16
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多