我收到 [错误] 'Eintrag'没有命名类型,我不确定为什么
I get the [Error] 'Eintrag' does not name a type and i am not sure why
我有一个类"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;
函数外的。所以你需要在别处做,大概是在构造函数中。
相关文章:
- 使用简单类型列表实现的指数编译时间.为什么
- 为什么与常规GCC不同,即使有"学究性错误",MinGW-GCC也能容忍丢失的返回类型
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 非类型指针和引用模板参数,以及在编译时如何/为什么解析它们.c++
- 为什么返回类型中需要typename?C++
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 为什么返回类型的'const'限定符对标有 __forceinline/内联的函数没有影响?
- 为什么 GCC 在使用类型别名时处理 const reinterpret_cast不同?
- 包含的类类型显然没有声明,为什么?
- 堆栈分配的类类型.为什么两个 ID 实例的地址相同?
- NTTP 的结构类型:为什么所有成员都必须是公共的?
- 为什么 std::bitset 只支持整型数据类型?为什么不支持浮点数?
- C++异常返回类型为什么字符*
- 线程之间的Qt连接类型:为什么这样做
- 无效使用不完整的类型-为什么在这种情况下没有错误