【问题标题】:Linked Lists in C. error: conflicting types. Solution?C. 中的链接列表错误:类型冲突。解决方案?
【发布时间】:2012-11-28 16:32:01
【问题描述】:

我定义了以下结构:

typedef struct PList{
    Person person;
    struct PList *nextPerson;  //  set to NULL by default <<<<<
}PList;

还有这个方法:

int length(struct PList* db){
    PList* cur = db;
    int size = 0;
    while (cur != NULL){
    ++size;
    cur = cur->nextPerson;
}
    return size;
}

错误:在长度方法的签名处引发了“长度”的冲突类型。

有什么想法吗?

【问题讨论】:

  • 您的代码中其他地方的 length 声明或定义存在冲突。
  • 您的函数定义与函数声明签名不匹配

标签: c pointers linked-list content-length


【解决方案1】:

这实际上意味着在您的源代码结构的其他地方还有另一个名为 length 的函数/声明具有不同的函数签名。

查找length() 函数的定义位置,并将正确的结构对象传递给该函数(struct PList 或PList* 类型)

【讨论】:

  • 所以你不能有 3 个将不同结构作为参数的方法?重载它有点..
  • 不——不是在 C 中——你可以在 C++ 中。
  • 你不能在 C 中进行函数重载。但是在 C++ 中可以实现
  • 在 C++ 中,虽然您可以在技术上为不同的类类型重载全局函数(例如长度),但通常会将长度作为类的方法。所以foo.length() 比length(foo) 更惯用...*大多数*时间。
  • 是的,但我认为不可能做任何事情,因为 C 不是面向对象的。我也不认为实际上可以使用像一般结构这样的东西来实现它,因为我不认为像继承这样的东西是为结构实现的。
猜你喜欢
  • 2021-07-06
  • 1970-01-01
  • 2021-12-21
  • 2019-09-15
  • 1970-01-01
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多