我正在尝试将对象添加到链接列表结构,但在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 ++仍然很新鲜所以我正在努力学习我能做的一切,并在寻求帮助之前先尝试自己解决问题,但我无法看到我在这里可能缺少的东西。任何帮助/资源将不胜感激!
答案 0 :(得分:0)
错误LNK 2019是因为“声明了函数或变量但未定义”。但正如您在上面提到的那样,您已经定义了stack :: add定义。然后它可能没有添加到您当前的项目中,因此它将找不到定义。
在Visual Studio解决方案树中右键单击项目,然后单击Add - >现有项目 - >选择源文件(我猜你的情况是stack.cpp)
答案 1 :(得分:0)
看起来我解决了这个问题,我继续钻研子弹并删除项目并重新导入文件。