【发布时间】:2013-12-01 17:04:24
【问题描述】:
我正在尝试创建一个非常简单的类来存储一棵树。我为节点创建了一个类,为树创建了一个类,它们包含在一个指针选项卡中。我的问题是我无法访问我的节点类的公共成员(我认为)。
这是我班级的代码:
#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]->enfants.size()”,但程序说基操作数不是指针。
有什么建议吗?谢谢!!
【问题讨论】: