C++;其他类无法识别包含的类 我尝试用C++进行引导。我有一个执行抽样计算的Bootstrapping类,一个存储结果的Sample类:
在C++;其他类无法识别包含的类 我尝试用C++进行引导。我有一个执行抽样计算的Bootstrapping类,一个存储结果的Sample类:,c++,class,include,C++,Class,Include,在Sample.h文件中 class Sample { // do something }; #include <iostream> #include "Bootstrapping.h" #include "Sample.h" using namespace std; int main() { // do something } 在引导中类 #include <vector> using namespace std; class Bootstr
Sample.h
文件中
class Sample
{
// do something
};
#include <iostream>
#include "Bootstrapping.h"
#include "Sample.h"
using namespace std;
int main()
{
// do something
}
在引导中
类
#include <vector>
using namespace std;
class Bootstrapping
{
private:
vector<Sample> sample_list; // Here the problem happens
// do something
};
当我调试上述代码时,编译器在引导
类中弹出一个错误,表示标识符“Sample”未定义
。但我显然已经把它包括在main
中了
有人能帮我摆脱这一切吗?非常感谢。您应该重新订购标题
#include "Sample.h"
#include "Bootstrapping.h"
您应该重新排列标题
#include "Sample.h"
#include "Bootstrapping.h"
您需要在
Bootstrapping.h
文件中包含“Sample.h”。您需要在Bootstrapping.h
文件中包含“Sample.h”。在Bootstrapping.h之后包含Sample.h。编译器从头到尾处理代码,所以在处理引导类的声明时,它对样本类一无所知。
当然,您应该在Bootstrapping.h中包含Sample.h,以使此标头独立于标头顺序。Sample.h包含在Bootstrapping.h之后。编译器从头到尾处理代码,所以在处理引导类的声明时,它对样本类一无所知。
当然,您应该在Bootstrapping.h中包含Sample.h,以使此标头独立于标头顺序。您是否在Bootstrapping类声明标头中包含Sample.h?您是否在Bootstrapping类声明标头中包含Sample.h?这是可行的,但取决于标头以特定顺序包含是不好的做法。由于“Bootstrapping”的定义取决于“Sample”的定义,Bootstrapping.h应该包括Sample.h。(转发声明在这里不起作用。)这是可行的,但依赖于以特定顺序包含的头是不好的做法。由于“Bootstrapping”的定义取决于“Sample”的定义,Bootstrapping.h应该包括Sample.h。(转发声明在这里不起作用。)