[英]does not name a type error (using global class)
我必須使我的類成為全局類(知道這不是一種好的樣式,但我也想在其他函數中使用我的類)。
編譯后,我得到以下消息:錯誤:“ Test_Class”未命名類型。
這是代碼:
main.cpp:
#include "class_header.h"
#include "header.h"
Test_Class Test1, Test2, Test3;
int main(){
}
class_header.h:
#ifndef CLASS_HEADER_H
#define CLASS_HEADER_H
class Test_Class {
public:
int get_a() const;
int get_b() const;
private:
int test_a;
int test_b;
int test_c;
};
#endif // CLASS_HEADER
header.h:
#ifndef HEADER_H
#define HEADER_H
extern Test_Class Test1, Test2, Test3;
void test_source(int a, int b);
#endif // HEADER_H
source.cpp:
#include "header.h"
void test_source(int a, int b){
}
我在main中定義了該類,所以我不理解錯誤消息。 感謝幫助。
行extern Test_Class Test1, Test2, Test3;
在header.h
需要聲明Test_Class
:在編譯source.cpp
時看不到。
一種補救措施是在source.cpp
開始處#include class_header.h
。
您的文件header.h
在很大程度上取決於class_header.h
因為你使用為test_class類。 因此,您應該在header.h
文件中包含class_header.h
。
#ifndef HEADER_H
#define HEADER_H
#include class_header.h
extern Test_Class Test1, Test2, Test3;
void test_source(int a, int b);
#endif // HEADER_H
任何其他解決方案都很難更改。 如果任何客戶端未按正確的順序布局頭文件,則它們都會出現問題。
您還可以簡化main.cpp
#include "header.h"
Test_Class Test1, Test2, Test3;
int main(){
}
您需要在標頭header.h:
之前的模塊source.cpp:
包含標頭class_header.h:
否則,編譯器不知道聲明中的Test_Class
是什么意思
extern Test_Class Test1, Test2, Test3;
或者您應該通過以下方式編寫聲明
extern class Test_Class Test1, Test2, Test3;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.