首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >请求非聚合类型的成员?

请求非聚合类型的成员?
EN

Stack Overflow用户
提问于 2013-12-01 17:04:24
回答 2查看 2.3K关注 0票数 0

我试图创建一个非常简单的分类来储存一棵树。我为节点创建了一个类,为包含指针的选项卡中的树创建了一个类。我的问题是,我不能访问我的节点类的公共成员(我认为)。

这是我们班的代码:

代码语言:javascript
复制
#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);
}


 };

这是我的主要代码

代码语言:javascript
复制
#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“。但我有个错误

代码语言:javascript
复制
32 `enfants' has not been declared 
32  request for member of non-aggregate type before '.' token 

我试过使用“a1->en幻想s.size()”,但是programe表示基本操作数不是指针。

有小费吗?谢谢你!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-01 17:09:20

a1是一个Arbre,但是a1[0]是一个int,所以它没有任何enfants

继承vector通常是个坏主意;我不确定您在这里要做的是什么。

票数 1
EN

Stack Overflow用户

发布于 2013-12-01 17:07:04

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20314783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档