快捷导航

LNK2019,为什么直接将.h改成.cpp后就能生成解决方案成功

把类和实现分开写,再写一个主函数,编译无错,但运行出现问题。

将头文件后缀改后

这也是从CSDN搜到的解决方法,不知道具体原因,求问。

代码列下
queue.h
templateclass Queue{public: virtual bool IsEmpty() const = 0; virtual bool IsFull()  const = 0; virtual bool Front(T& x) const = 0; virtual bool EnQueue(T x) = 0; virtual bool DeQueue() = 0; virtual void Clear() = 0;};SetQueue.h
#include"queue.h"templateclass SeqQueue : public Queue{public: SeqQueue(int mSize); ~SeqQueue() { delete[] q; } bool IsEmpty() const { return front == rear; } bool IsFull() const { return (rear + 1) % maxSize == front; } bool Front(T& x) const; bool EnQueue(T x); bool DeQueue(); void Clear() { front = rear = 0; }private: int front, rear; int maxSize; T *q;};SetQueue.cpp
#include"SetQueue.h"templateSeqQueue::SeqQueue(int mSize){ maxSize = mSize; q = new T[maxSize]; front = rear = 0;}templatebool SeqQueue::Front(T & x) const{ if (IsEmpty()) {  cout

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员1

因为.h中只是做了声明,可能编译时VS也没有把中间lib编译进来,导致你实例化时需要调用构造函数,它找不到构造函数的实现。#include cpp时就把实现包含进来了
可以参考这个文章:"undefined reference to" 问题汇总及解决方法
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP