0
我有一個分層的ADT,我試圖從客戶端調用一個較低的成員。具體來說,我有一個Graph ADT依賴List ADT來存儲鄰接關係。我在調用方法(如客戶端中的List ADT的長度)方面存在問題。調用對象不是一個函數 - 如何正確地嵌套標頭來調用方法
我在Graph.h中包含List.h,然後在客戶端中包含Graph.h。 (但是向客戶端添加一個包含List.h的內容不會改變任何內容)。編譯器在調用Graph.h中的List構造函數時沒有問題,但是當我調用諸如長度之類的List方法時,它告訴我「調用對象長度不是函數」。
GraphClient.c exerpt
#include <stdio.h>
#include <stdlib.h>
#include "Graph.h"
int main(int argc, char** argv) {
List L = newList();
printf("%d",length(L));
}
List.c exerpts
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "List.h"
List newList(void) {
List L = malloc(sizeof (ListObj));
L->front = L->back = L->current = NULL;
L->cursor = -1;
L->length = 0;
return (L);
}
int length(List L) {
if (L == NULL) {
printf("List error: calling length on NULL List reference");
exit(1);
}
return (L->length);
}
Graph.c exerpts
#include <stdlib.h>
#include "Graph.h"
#include "List.h"
我是否排列層級的正確包括?如果我不試圖在客戶端內部調用List方法,該程序工作正常,但如果沒有,我不會滿足規範。
你在'int main(...){...}'中沒有#include「List.h」嗎? – t0mm13b
我們應該猜測List.h的內容嗎?你不發佈[最小完整示例](http://sscce.org)的原因是什麼? – Beta