在C ++中用另一个类创建一个类的对象

时间:2015-03-14 16:11:56

标签: c++ class subclass

我有一个ID3类和一个Tree类。类树的对象在ID3中使用,并显示未声明树的错误。

代码看起来像

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <math.h>
#include <vector>
using namespace std;
class ID3 {
public:
      string v[];
      int x;
public:
     double Hi(Tree data)
    {
        int y=x-1;
    }
};
class Tree{
         Tree();
}

3 个答案:

答案 0 :(得分:6)

Tree中使用之前,您需要转发声明ID3,否则编译器不知道Tree是什么:

class Tree;

class ID3 {
...

如果您需要在某处使用Tree实例,那么您需要在此之前获得Tree的完整定义,例如:

class Tree {
    Tree();
};

class ID3 {
...
    double Hi(Tree data) {
        // do something with 'data'
        int y=x-1;
    }
};

有关何时使用前向声明的详细信息,请参阅this Q&A

答案 1 :(得分:2)

通常,C ++是从上到下编译的。因此,如果类ID3需要类Tree,则必须在ID3之前定义Tree。只需将类树放在ID3之前,就可以了。

答案 2 :(得分:0)

Tree的前进减速将完成工作。在Tree instance中使用ID3时,编译器对Tree类一无所知,编译过程从上到下。