當我將所有源代碼放入一個文件時,該程序成功構建。但是,當我將它們拆分爲頭文件時,出現鏈接錯誤。如何在C++中編譯位於不同文件中的模板?
主要我的程序: //C++_Class_Templates.cpp
#include <iostream>
#include <vector>
#include "Queue.h"
using namespace std;
//Usage for C++ class templates
void main()
{
MyQueue<int> q;
q.Add(1);
q.Add(2);
}
的Queue.h看起來像這樣
#pragma once
#include <vector>
template <typename T>
class MyQueue
{
std::vector<T> data;
public:
void Add(T const &);
void Remove();
void Print();
};
和Queue.cpp看起來是這樣的:
#include "Queue.h"
template <typename T> void MyQueue<T> ::Add(T const &d)
{
data.push_back(d);
}
當我嘗試構建它時,出現此錯誤:
1>main.obj : error LNK2019: unresolved external symbol "public: void __thiscall
MyQueue<int>::Add(int const &)" ([email protected][email protected]@@[email protected]) referenced in function _main
你是如何編譯這個的? – Falmarri 2011-02-01 23:58:10