C++ #在include guard结束之前将.cpp包含在.h文件中
我最近收到一份定义.h文件的作业。在这个底部的.h文件中,它包括.cpp文件。比如说C++ #在include guard结束之前将.cpp包含在.h文件中,c++,header-files,C++,Header Files,我最近收到一份定义.h文件的作业。在这个底部的.h文件中,它包括.cpp文件。比如说 #ifndef CLASS_H #define CLASS_H class MyClass { //variablles and methods }; #include MyClass.cpp #endif 现在,当我试图为.cpp文件编写定义时,问题出现了。例如,当我试图定义构造函数is时,它会给我一个错误 error: ‘MyClass’ does not name a type 当我试图
#ifndef CLASS_H
#define CLASS_H
class MyClass
{
//variablles and methods
};
#include MyClass.cpp
#endif
现在,当我试图为.cpp文件编写定义时,问题出现了。例如,当我试图定义构造函数is时,它会给我一个错误
error: ‘MyClass’ does not name a type
当我试图定义运算符重载函数时,我也会出错
我知道这些错误只适用于上述情况,因为当我在.cpp文件中包含我的.h文件时,它可以完美地编译
我不允许更改此作业中的任何.h文件请勿在头文件中执行此操作: #包括MyClass.cpp 单独编译MyClass.cpp并在MyClass.cpp中编译,具有:
#include MyClass.hpp
或
无论您拥有什么。为什么要这样做?如果您要在
.h
文件中包含.cpp
文件,那么不要尝试编译.cpp
文件。将MyClass.cpp
放在标题中没有意义。把它拿出来。记住在cpp文件中包含头文件。我不确定他们的方法背后的原因。但我能做些什么来让它正确编译呢?@KeatonPennells想得到正确编译的东西吗?如果将.cpp
文件包含在其他文件中,则不应尝试编译.cpp
文件,就像通常包含其他文件中的.h
文件一样,因此不尝试编译它们。
#include MyClass.h