私は自分の構造クラスの小さなプロジェクトに取り組んでおり、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
さらに徹底的にするために、よりミニマリストなメイクファイルも試しました
メイクファイル (2)
test:
g++ minHeap.h leftHeap.h skewHeap.h comparison.cpp minHeap.cpp leftHeap.cpp skewHeap.cpp -o lab10
clean:
rm lab10 *.o
情報過多ではないことを願っています。誰かがこれについて何かアイデアを持っているかどうか教えてください。ここで他の g++ の「タイプに名前を付けない」問題 (および Google 検索の全ページもいくつか) を見てきましたが、これを説明できるものは何も見つかりませんでした。私が見落としていた単純なものかもしれないというこっそりとした疑いがありますが、どんな助けでも大歓迎です。
ありがとう!