我有这个错误:
Undefined symbols for architecture x86_64:
"my::Queue<int>::Queue()", referenced from:
_main in ccdwI88X.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
对于此代码'main.cpp':
#include "Queue.hpp"
int main()
{
my::Queue<int> myqueue;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
'Queue.hpp':
#ifndef QUEUE_HH__
#define QUEUE_HH__
namespace my
{
template <typename T>
class Queue
{
public:
Queue();
};
}
#endif
Run Code Online (Sandbox Code Playgroud)
和'Queue.cpp':
#include "Queue.hpp"
template <typename T>
my::Queue<T>::Queue()
{
}
Run Code Online (Sandbox Code Playgroud)
答案发布在这里:https://stackoverflow.com/a/312402/700926是我认为你需要的.
如果我将您的Queue.cpp文件编辑为:
#include "Queue.hpp"
template <typename T>
my::Queue<T>::Queue()
{
}
template class my::Queue<int>;
Run Code Online (Sandbox Code Playgroud)
..它编译得很好.
有关详细说明,请参阅我刚才提到的URL.