为什么我得到"致命错误LNK1120:1未解决的外部因素"

时间:2014-03-26 13:19:18

标签: c++ debugging visual-c++ linked-list

我正在使用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;
}

1 个答案:

答案 0 :(得分:2)

将此行从main内移到文件范围,然后稍微更改一下:

Node* Node::first = NULL;

如上所述,您声明了一个名为first的局部变量,其类型为“指向类Node成员的指针,类型为Node”。此局部变量与Node::first不同且无关。