LNK2019尝试引用类的.cpp文件时出错

时间:2019-11-22 01:04:54

标签: c++ class templates stack lnk2019

我一直在拼命地试图找出我遇到的这个问题。我的C ++类中有一个项目,必须使用C ++ OurStack容器创建自定义类<stack>。该类应该使用模板来接受任何类型的数据。

这是我的OurStack.h文件,只有一种基本方法isEmpty无法正常工作。

#ifndef _STACK_INTERFACE
#define _STACK_INTERFACE
#include <stack>;

using namespace std;

template <class T>
class OurStack
{
public:
    bool isEmpty() const;
private:
    stack<T> thisStack;
};

#endif

这是我的OurStack.cpp文件。

#include "OurStack.h"

template<class T>
bool OurStack<T>::isEmpty() const
{
    return thisStack.empty();
}

在我的主文件中,实际上我要做的就是查看该类是否正常工作。这是主文件:

#include <iostream>
#include "OurStack.h"

using namespace std;

int main()
{
    OurStack<int> test;
    cout << test.isEmpty();
}

运行此命令时,会显示以下特定错误消息:

Error   LNK2019 unresolved external symbol "public: bool __thiscall OurStack<int>::isEmpty(void)const " (?isEmpty@?$OurStack@H@@QBE_NXZ) referenced in function _main   Stacks

当我尝试为堆栈类的其他基本方法(例如push,pop和peek)编码时,它们都获得了完全相同的错误消息,只是方法名称不同。

但是,如果我将代码从OurStack.cpp复制并粘贴到OurStack.h,则一切正常。同样,如果我仅将#include "OurStack.cpp"添加到主文件的顶部,则完全可以正常工作。出于某种原因,OurStack.h似乎无法识别OurStack中的函数定义。 cpp。我真的不知道为什么-显然我在这里错过了一些东西。

任何帮助将不胜感激。

0 个答案:

没有答案