[英]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.