我试图建立一个名为" cache"的结构,它包含一个容器(一个已经实现的List类型的数组)和一个迭代器。 当我试图在容器中的下一个List中创建迭代器点时,我得到了#34;指向未知结构的指针的增量"和"算术指向不完整类型"。我想要解释一下我做错了什么:
列表的类型定义如下:
typedef struct List_t *List;
所以List是一个指向List_t结构的指针。
缓存定义如下:
typedef struct cache_t* Cache;
struct cache_t {
List* container;
int cache_size;
List iterator;
};
所以迭代器是一个List,它是一个指向数组(容器)中List_t的指针。 我想做的是:
cache->iterator ++; //cache is an object of type Cache
据我所知,应该通过sizeof(List)将迭代器移动到数组中的下一个List。那我为什么会收到错误?
谢谢!
答案 0 :(得分:1)
指针不会增加sizeof(List)
,而是增加sizeof(struct List_t)
。 struct List_t
的定义不在您的来源中,因此是不完整的类型。这就是错误的原因。