2013-08-27 40 views
0

我正在尝试使用C++进行引导。我有一个Bootstrapping类进行采样计算,一个Sample类存储结果:C++包含的类无法被其他类识别

Sample.h文件

class Sample 
{ 
     // do something 
}; 

Bootstrapping

#include <vector> 
using namespace std; 

class Bootstrapping 
{ 
private: 
    vector<Sample> sample_list; // Here the problem happens 

    // do something 
}; 

main.cpp文件

#include <iostream> 
#include "Bootstrapping.h" 
#include "Sample.h" 
using namespace std; 

int main() 
{ 
    // do something 
} 

当我调试上述代码时,编译器在Bootstrapping类中弹出错误消息,该错误消息说identifier "Sample" is undefined。但我明显已将它包含在main

任何人都可以帮我解决这个问题吗?提前谢谢了。

+0

您是否在引导类声明标头中包含Sample.h? – darmat

回答

2

您应该重新排列标题。

#include "Sample.h" 
#include "Bootstrapping.h" 
+9

这是有效的,但依赖于头部被包含在一个特定的顺序是不好的做法。由于'Bootstrapping'的定义取决于'Sample'的定义,Bootstrapping.h应该包含Sample.h。 (前向声明在这里不起作用。) – bames53

2

您需要#include "Sample.h"Bootstrapping.h文件。

0

在Bootstrapping.h之后包含Sample.h。编译器从头到尾处理代码,因此它在处理Bootstrapping类的声明时对Sample类一无所知。 当然,您应该在Bootstrapping.h中包含Sample.h,以使此标题独立于标题顺序。