链表头指针在类外定义为extern,报错显示在其他源文件的obj中是无法解析的外部符号
时间: 2024-02-15 18:01:58 浏览: 208
如果你在一个源文件中定义了一个extern变量,其他源文件就可以通过extern关键字来声明这个变量并使用它。但是,如果你只声明了这个变量而没有定义它,编译器就会报错说这个变量是无法解析的外部符号。
所以,如果你在一个源文件中将链表的头指针定义为extern变量,其他源文件就需要通过extern关键字来声明这个变量,并且在某个源文件中进行定义。例如,假设你在一个源文件中定义了链表的头指针:
```cpp
// LinkedList.cpp
#include "LinkedList.h"
ListNode* head = NULL;
```
然后,在其他源文件中,你需要使用extern关键字来声明这个变量,例如:
```cpp
// OtherFile.cpp
extern ListNode* head;
```
这样,你就可以在OtherFile.cpp中使用这个头指针变量了。但是,你需要确保在某个源文件中进行了定义,否则编译器就会报错说这个变量是无法解析的外部符号。
相关问题
链表头指针在类内定义,其他源文件中显示未定义标识符
如果你在类内定义了链表的头指针,其他源文件就无法直接访问这个变量,因为它是在类的作用域内定义的。此时,你需要使用类的对象来访问这个头指针变量。
举个例子,假设你的链表类定义如下:
```cpp
class LinkedList {
public:
ListNode* head;
// ...
};
```
在其他源文件中,你需要先创建一个LinkedList对象,然后通过这个对象来访问头指针变量。例如,如果你想在另一个源文件中访问头指针变量,可以这样做:
```cpp
#include "LinkedList.h"
LinkedList myList;
myList.head = NULL; // 访问头指针变量并初始化为NULL
```
在这个例子中,我们先包含了LinkedList类的头文件,然后创建了一个LinkedList对象myList。接着,我们就可以通过这个对象来访问头指针变量head了。
当然,如果你想在其他源文件中频繁地访问头指针变量,也可以将它声明为extern变量,让其他源文件可以直接使用。例如,在头文件中声明:
```cpp
extern ListNode* head;
```
然后在链表类的实现文件中定义这个变量:
```cpp
#include "LinkedList.h"
ListNode* head = NULL;
```
这样,在其他源文件中就可以直接使用这个头指针变量了。
C++编写代码首先定义一个Node类,用于表示链表的节点,该类包括data字段,用于存储节点的数据,以及next字段,用于存储该节点的下一个节点的指针。然后定义一个List类,用于表示链表,该类包含一个head字段,用于存储链表的头节点的指针,以及封装链表访问接口函数(get_data,move_next,move_prev,insert,remove,display)的成员函数,其中insert(int pos,Object obj)与remove(int pos),
我可以为您提供关于C语言链表的基本信息。链表是一种数据结构,可以存储有序的数据。一个链表由一组节点组成,每个节点都包含一个数据域和一个指向其他节点的指针。每个节点都是单向链表中的一部分,而最后一个节点将指向NULL。在C语言中,可以使用结构体来定义一个节点,并将其用于存储数据。其中,data字段用于存储节点的数据,而next字段用于存储下一个节点的指针。此外,还可以使用List类封装链表访问接口函数,如get_data、move_next、move_prev、insert和remove。
阅读全文