gpt4 book ai didi

被调用的对象不是函数 - 如何正确嵌套 header 来调用方法

转载 作者:行者123 更新时间:2023-11-30 15:46:46 26 4
gpt4 key购买 nike

我有一个分层的 ADT,我试图从客户端调用较低的成员。具体来说,我有一个图 ADT,它依赖于列表 ADT 来存储邻接关系。我在调用方法时遇到问题,例如客户端内列表 ADT 的长度。

我将 List.h 包含在 Graph.h 中,然后将 Graph.h 包含在客户端中。 (但是向客户端添加 include List.h 不会改变任何内容)。编译器在调用 Graph.h 中的 List 构造函数时没有问题,但是当我调用 List 方法(例如 length)时,它告诉我“调用的对象 length 不是函数”。

GraphClient.c 摘录

#include <stdio.h>
#include <stdlib.h>
#include "Graph.h"

int main(int argc, char** argv) {
List L = newList();
printf("%d",length(L));
}

List.c 摘录

#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 摘录

#include <stdlib.h>
#include "Graph.h"
#include "List.h"

我是否正确地对包含内容进行了分层?如果我不尝试在客户端内调用 List 方法,该程序可以正常工作,但如果不这样做,我将无法满足规范。

最佳答案

在提供的代码中,您表明需要在 Graph.c 文件中#include "List.h"。这可能是为了允许 Graph.c 代码调用在 List.c 中实现的函数。 GraphClient.c 在这方面没有什么不同。也添加 #include "List.h"

#include <stdio.h>
#include <stdlib.h>
#include "Graph.h"
#include "List.h"

int main(int argc, char** argv) {
List L = newList();
printf("%d",length(L));
}

关于被调用的对象不是函数 - 如何正确嵌套 header 来调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18067501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com