我正在尝试创建一个非常简单的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()”,但是程序中基本操作数不是指针。
任何提示?谢谢!!
答案 0 :(得分:1)
a1[0]
的类型为int
,因此a1[0].enfants
无效。
答案 1 :(得分:1)
a1
是Arbre
,但a1[0]
是int
,因此它没有enfants
。
继承vector
通常是一个坏主意;我不确定这是你打算做什么的。