c++对函数的未定义引用

c++ undefined reference to function

本文关键字:未定义 引用 函数 c++      更新时间:2023-10-16

我试图实现一个通用的队列类。Template类是这样的:Queue.h

template <class T>
class Queue {
public:
  Queue() {}
 ~Queue() {} 
...
  void enqueue( const T& e );
  T dequeue( void );
  int Size( void ) const { return s1.size() + s2.size();}    
private:
    std::stack<T> s1;
    std::stack<T> s2;
};
#include "Queue.cpp"

它的实现是这样的:
Queue.cpp:

#include "Queue.h"
template <class T>
void Queue<T>::enqueue( const T& e )
{
//...
}
template <class T>
T Queue<T>::dequeue ()
{
//...
}

我的问题是,我不能调用这个类的一些函数,我已经在文件Queue.cpp中实现。

main.cpp:

int main() {
Queue<int> myQueue;
const int a = 1;
 myQueue.enqueue(a);
 myQueue.Size();
return 0;
}

i总是出现如下错误:对Queue::enqueue(int const&)的未定义引用

[错误]ld返回1退出状态

Makefile。winrecipe for target 'MYQueue.exe'失败

将整个模板定义包括其成员函数放在一个头文件中