C++ 为什么我会得到;致命错误LNK1120:1未解析的外部“;

C++ 为什么我会得到;致命错误LNK1120:1未解析的外部“;,c++,debugging,visual-c++,linked-list,C++,Debugging,Visual C++,Linked List,我正在使用节点类创建链接列表的节点。它是简单的实现和不完整的。我首先使用了指针,作为静态,我认为这是更好的选择,因为我将使用它一次。这就是我要存储第一个节点的地址的时候。但当我试图编译时,我得到了以下错误 1> main.obj:错误LNK2001:未解析的外部符号“公共:静态 类节点*节点::第一个“(?)?first@Node@@2PAV1@A) 1> c:\users\labeeb\documents\visual studio 2010\Projects\linked list1\Deb

我正在使用
节点
类创建
链接列表
节点
。它是简单的实现和不完整的。我首先使用了指针
作为静态,我认为这是更好的选择,因为我将使用它一次。这就是我要存储第一个
节点的地址的时候。但当我试图编译时,我得到了以下错误

1> main.obj:错误LNK2001:未解析的外部符号“公共:静态 类节点*节点::第一个“(?)?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。< /P> 代码:

#包括
使用名称空间std;
类节点
{
公众:
静态节点*第一;
节点*下一步;
int数据;
节点()
{
Node*tmp=new Node;//tmp是新创建的节点的地址。
tmp->next=NULL;
tmp->data=0;//用0初始化
Node::first=tmp;
}
空白插入(int i)
{
节点*prev=NULL,*tmp=NULL;
tmp=Node::first;
while(tmp->next!=NULL)//获取link=NULL的节点地址
{
//prev=tmp;
tmp=tmp->next;
}
//现在tmp有了最后一个节点的地址。
Node*newNode=newNode;//创建新节点。
newNode->next=NULL;//将new的链接设置为NULL
tmp->next=newNode;//将最后一个节点链接到新创建的节点。
newNode->data=i;//在newNode中存储数据
}
};
int main()
{
节点::*first=NULL;
节点n;
系统(“暂停”);
返回0;
}

将此行从
main
内部移动到文件范围,并稍微更改:

Node* Node::first = NULL;
如前所述,您正在声明一个名为
first
的局部变量,类型为“指向类
Node
的成员的指针,类型为
Node
”。此局部变量与
Node::first
不同,且与之无关

Node* Node::first = NULL;