请求非聚合类型的成员?

时间:2013-12-01 17:04:24

标签: c++ tree public

我正在尝试创建一个非常简单的classe来存储一棵树。我已经为节点创建了一个类,为树创建了一个类,它包含一个指针选项卡。我的问题是我无法访问我的节点类的公共成员(我认为)。

这是我班上的代码:

#include <cmath> 
#include <iostream>
#include <cstdio>
#include <cassert>
#include <vector>


using namespace std;

template <class T>
class Node : public vector<T> {

public:
     vector<T> enfants;
     T pere; 
     T valeur; 

  Node(){valeur=T(0); pere=T(0); enfants= vector<T>();}
  Node(T v){valeur=v; pere=T(0); enfants= vector<T>();}
  Node(T v, T p) {valeur= v; pere=p; enfants=vector<T>();}     

void accouche(const T& x)
{
   enfants.push_back(x);
}



template <class T>
class Arbre: public Node<T> {

public:

      Node<T> * arbre;

      Arbre(int n){arbre= new Node<T> [n];}
      Arbre(int n, T a) {arbre= new Node<T> [n]; arbre[0]=Node<T>(a);}

void ajouter(const T& enfant, const int& posf, const T& per, const int& posp )      
{
arbre[posp].accouche(enfant);
arbre[posf]=Node<T>(enfant,per);
}


 };

这是我的主要代码

#include <cmath>
#include <iostream>
#include <cstdio>
#include <cassert>
#include <vector>
#include "classenode.hpp"


using namespace std;

int main()

{
Arbre<int> a1(4,0);

a1.ajouter(1,1,0,0);
a1.ajouter(2,2,1,1);
a1.ajouter(3,3,0,0);

cout<<a1[0].enfants.size()<<endl;
system("pause");       

}

我想假设结果为“2”。但我有这个错误

32 `enfants' has not been declared 
32  request for member of non-aggregate type before '.' token 

我尝试使用“a1 [0] - &gt; enfants.size()”,但是程序中基本操作数不是指针。

任何提示?谢谢!!

2 个答案:

答案 0 :(得分:1)

a1[0]的类型为int,因此a1[0].enfants无效。

答案 1 :(得分:1)

a1Arbre,但a1[0]int,因此它没有enfants

继承vector通常是一个坏主意;我不确定这是你打算做什么的。