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



我正在尝试将对象添加到链表结构中,但在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;
    }
}

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

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++仍然很新鲜,所以我试图学习我能做的一切,并尝试在寻求帮助之前先自己解决问题,但我就是看不出我在这里可能错过了什么。任何帮助/资源将不胜感激!

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

在Visual Studio解决方案树中,右键单击项目,然后单击"添加->现有项"->选择源文件(我想在您的情况下它是堆栈.cpp)

看起来我解决了它,我继续咬紧牙关,只是删除了项目并重新导入了文件。

相关内容

  • 没有找到相关文章

最新更新