我正在使用Node
课程来创建node
linked list
。它实现简单,不完整。我使用指针first
作为静态我认为这将是更好的选择,因为我将使用它一次。那就是我要存储第一个Node
的地址。但是当我尝试编译时,我遇到了以下错误。
1> main.obj:错误LNK2001:未解析的外部符号“public:static class Node * Node :: first“(?first @ Node @@ 2PAV1 @ A) 1> c:\ users \ labeeb \ documents \ visual studio 2010 \ Projects \ linked list1 \ Debug \ linked list1.exe:致命错误LNK1120:1未解决 的外部 ==========构建:0成功,1个失败,0个最新,0个跳过==========
注意:我使用的是Visual C ++ 2010。
代码:
#include<iostream>
using namespace std;
class Node
{
public:
static Node *first;
Node *next;
int data;
Node()
{
Node *tmp = new Node; // tmp is address of newly created node.
tmp->next = NULL;
tmp->data = 0; //intialize with 0
Node::first = tmp;
}
void insert(int i)
{
Node *prev=NULL , *tmp=NULL;
tmp = Node::first;
while( tmp->next != NULL) // gets address of Node with link = NULL
{
//prev = tmp;
tmp = tmp->next;
}
// now tmp has address of last node.
Node *newNode = new Node; // creates new node.
newNode->next = NULL; // set link of new to NULL
tmp->next = newNode; // links last node to newly created node.
newNode->data = i; // stores data in newNode
}
};
int main()
{
Node Node::*first = NULL;
Node n;
system("pause");
return 0;
}
答案 0 :(得分:2)
将此行从main
内移到文件范围,然后稍微更改一下:
Node* Node::first = NULL;
如上所述,您声明了一个名为first
的局部变量,其类型为“指向类Node
成员的指针,类型为Node
”。此局部变量与Node::first
不同且无关。