我试图创建一个非常简单的分类来储存一棵树。我为节点创建了一个类,为包含指针的选项卡中的树创建了一个类。我的问题是,我不能访问我的节点类的公共成员(我认为)。
这是我们班的代码:
#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->en幻想s.size()”,但是programe表示基本操作数不是指针。
有小费吗?谢谢你!!
发布于 2013-12-01 17:09:20
a1是一个Arbre,但是a1[0]是一个int,所以它没有任何enfants。
继承vector通常是个坏主意;我不确定您在这里要做的是什么。
发布于 2013-12-01 17:07:04
a1[0]的类型是int,因此a1[0].enfants无效。
https://stackoverflow.com/questions/20314783
复制相似问题