c++ - 我收到 [Error] 'Eintrag' does not name a type 我不知道为什么

标签 c++ arrays pointers forward-declaration

我有一个类“Extendiblehashing”,其中有一个带有 size_t n,t 的结构“Bucket”和一个名为 values[B] 的 B 类 E 对象数组。 我想要实现的是,通过构建 Extendiblehashing 对象,我得到了一个 Bucketpointers 数组(这里称为 Eintrag,应该只从 1 个指针开始)到一个简单的 Bucket(Bucket 在我的例子中称为 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;}

更改 Eintrag 数组的方法类似于:

 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;
  } 

编译时我收到“'Eintrag' 没有命名类型”的错误,因此我使用 Eintrag 的所有东西都不能正常工作。 结构桶有问题吗?或者我不能创建指向刚刚声明的对象的指针数组吗?

我对编程还很陌生,所以请不要因为早期的错误而讨厌我。 非常感谢,J.K.

最佳答案

你不能有这样的语句

Eintrag[0]= &number1;

在函数之外。所以您需要在其他地方执行此操作,大概是在构造函数中。

关于c++ - 我收到 [Error] 'Eintrag' does not name a type 我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23606050/

相关文章:

c++ - 使用 boost chrono 格式化时间

C++ 类型信息

c++ - 看似正确的模板代码出错 - 怎么了?

javascript - 在 Javascript 中打印数组的数组

c - C中使用指针对数组进行升序排序

c++ - 如何在矩阵中使用指针。这行代码是做什么的/意思是 : int r=**(++b);

c++ - 在现代 C++ 中使用非智能指针

c++ - 创建静态库并使用 premake 链接到它

c - 将数组分配给指针时,这些方法有什么区别

c - 取消引用指向指针数组的指针