我有一個類,名爲A,它有它自己的頭文件。然後我有另一個叫做B的類,它也有自己的頭文件。他們每個人都有自己的.cpp文件,在那裏我實現了他們的所有功能。我總是收到一個錯誤,說我的班級沒有指定類型
我想有B類有一個私有變量類類型A的變量,但我不斷收到錯誤「A」沒有指定類型
我的代碼如下所示:
main.h:
#ifndef MAIN_H
#define MAIN_H
#include "A.h"
#include "B.h"
#endif
main.cpp中:
#include "main.h"
int main(int argc, char* args[]) {
B test;
}
啊:
#ifndef A_H
#define A_H
#include "main.h"
class A {
public:
//public functions
private:
//private variables
};
#endif
了Bh:
#ifndef B_H
#define B_H
#include "main.h"
class B {
public:
//public functions...
private:
A temp;
}
#endif
因此,所有的我的包括在main.h,它包括一個前B. B具有類型A的變量,但它是從在主被包括在內。 h和Bh包含main.h。不過,我不斷收到一個錯誤說:
error: 'A' does not name a type.
我做了一些谷歌上搜索,而且好像這意味着,當你使用它是沒有定義的,但應該有定義,因爲它是被列入在main.h中,對嗎?
你爲什麼不在`main.cpp`中包含`B.h`,在`B.h`中包含`A.h`?只包括你需要的東西。我很好奇你的編譯器是否被include遞歸弄糊塗了。 `main.h` - >`A.h` - >`main.h`等 – 2011-02-03 21:04:17
@Mark Loeser:防護常量(xx_H)可以避免遞歸問題,但是包含策略確實很奇怪。 – trojanfoe 2011-02-03 21:05:43
@trojanfoe:是的......這是一個非常漫長的一天。我真的應該回家:) – 2011-02-03 21:06:15