将对象添加到链接列表错误[C ++]

时间:2016-02-24 04:20:20

标签: c++ class data-structures linked-list

我正在尝试将对象添加到链接列表结构,但在Visual Studio 2015中继续收到此错误:

Error   LNK2019 unresolved external symbol "public: void __thiscall Stack::add(class Creature *)" (?add@Stack@@QAEXPAVCreature@@@Z) referenced in function _main    

这是我要添加到列表中的代码 - 如果我将其修改为只是将一个整数值添加到链表(不允许使用STL),这个函数就可以了:

#include "Creature.h"

void Stack::add(Creature* obj) {
    /* create head node if list is empty */
    if (head == NULL) {
        head = new Node;
        head->data = obj;
        head->next = NULL;
    }
    else {
        /* set pointer to head */
        Node* temp = head;

        /* iterate until next node is empty */
        while (temp->next != NULL)
            temp = temp->next;

        /* create new node when NULL */
        temp->next = new Node;
        temp->next->data = obj;
        temp->next->next = NULL;
    }
}

这是我的Creature类定义(抽象类):

class Creature {
    protected:
        int strike, defense,
            armor, strength,
            damage;
        bool alive;
        string type;
    public:
        Creature(
                strike = 0;
                defense = 0;
                armor = 0;
                strength = 0;
                alive = true;
                type = " ";
                );
        virtual int attack() = 0;
        virtual bool defend(int) = 0;
        virtual string name() = 0;
};

这是我的主要功能,我尝试将对象添加到列表中:

#include "Stack.h"
#include "Creature.h"
#include "Barbarian.h"

int main() {
    Stack q;
    Creature *test = new Barbarian;
    q.add(test);
    return 0;
}

我对C ++仍然很新鲜所以我正在努力学习我能做的一切,并在寻求帮助之前先尝试自己解决问题,但我无法看到我在这里可能缺少的东西。任何帮助/资源将不胜感激!

2 个答案:

答案 0 :(得分:0)

错误LNK 2019是因为“声明了函数或变量但未定义”。但正如您在上面提到的那样,您已经定义了stack :: add定义。然后它可能没有添加到您当前的项目中,因此它将找不到定义。

在Visual Studio解决方案树中右键单击项目,然后单击Add - >现有项目 - >选择源文件(我猜你的情况是stack.cpp)

答案 1 :(得分:0)

看起来我解决了这个问题,我继续钻研子弹并删除项目并重新导入文件。