我一直在拼命地试图找出我遇到的这个问题。我的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。我真的不知道为什么-显然我在这里错过了一些东西。
任何帮助将不胜感激。