我收到 [错误] 'Eintrag'没有命名类型,我不确定为什么

I get the [Error] 'Eintrag' does not name a type and i am not sure why

本文关键字:类型 为什么 不确定 Eintrag 错误      更新时间:2023-10-16

我有一个类"Extendiblehashing",其中有一个struct "Bucket", size_t n,t和一个B类E对象数组,称为值[B]。我想要实现的是,随着Extendiblehashing对象的构造,我得到一个桶指针数组(这里称为Eintrag,应该从只有1个指针开始)到一个简单的桶(桶在我的情况下称为number1),我可以在以后动态地更改为一个列表的更多的指针到更多的桶在类Extendiblehashing的方法。

template <typename E, size_t B=7 >
class Extendiblehashing : public Container<E> {
 struct Bucket {
  size_t n; //wieviel ist belegt?
  size_t t; // lokale Tiefe
  E values[B];
  Bucket(): n(0), t(0) {};
  bool member (const E& e) const { for (int i=0; i<n; ++i) if (e==values[i]) return true;
   return false;
   };
  bool append(const E&e) { if (n==B) return false; values[n++]=e; return true;};
 };
 size_t pow(size_t a, size_t b) {size_t u=1; for (int i=0; i<b;++i) u=u*a; return u; };
 size_t d; //globale Tiefe
 Bucket number1();
 Bucket * Eintrag[1];
 Eintrag[0]= &number1;
 size_t n; //Zähler der gespeicherten Elemente
 void sort() const;
public:
 Extendiblehashing( ) : n(0), d(0) {}
 virtual ~Extendiblehashing() {  delete[] Eintrag;}

改变eintrg数组的方法类似于:

 template <typename E, size_t B>
 void Extendiblehashing<E,B>::inc() {
  Bucket * newEintrag = new Bucket[pow(2,d+1)];
  for (int i=0;i<pow(2,d);i++)
   newEintrag[i]=*Eintrag[i];
  for (int i=pow(2,d),j=0;i<pow(2,d+1);i++,j++)
   newEintrag[i]=*Eintrag[j]; 
  d=d+1;
  delete[] Eintrag;
  Eintrag= newEintrag;
  } 

在编译时,我得到的错误是"' eintrg '没有命名类型",因此我使用eintrg的一切都不完全工作。是否有关于结构桶的问题?或者我不能创建一个指向刚刚声明的对象的指针数组吗?

我是一个编程新手,所以请不要因为我早期的错误而恨我。J.K.

不能有这样的语句

Eintrag[0]= &number1;
函数外的

。所以你需要在别处做,大概是在构造函数中。

相关文章: