我想在我的dll項目中使用我自己的一些模板類。爲了做到這一點,建議here,我仍然通過包含我的類的頭文件(作爲.inl文件)的定義,將我的類模板聲明從其定義中分離出來。我試圖完成這個類的是我自己的矢量類,它將包裝std :: vector類。下面類設置舉例:模板多重定義問題
Vector.h
#pragma once
#include <vector>
namespace BlazeFramework
{
template<typename type>
class Vector
{
public:
Vector();
Vector(int size);
~Vector();
private:
std::vector<type> _collectionOfItems;
};
}
#include "Vector.inl"
Vector.inl
#include "Precompiled.h"
#include "Vector.h"
namespace BlazeFramework
{
template<typename type>
Vector<type>::Vector()
{
}
template<typename type>
Vector<type>::Vector(int size) : _collectionOfItems(_collectionOfItems(size, 0))
{
}
template<typename type>
Vector<type>::~Vector()
{
}
}
當我第一次嘗試這樣做,我得到了錯誤,說: 「函數模板已經被定義」。我想這是由於我的.inl文件包含頂部的「Vector.h」頭,所以我刪除了它。但是,我現在正在收到錯誤,「無法識別的模板聲明/定義」
。
如何解決此問題,以便我仍然可以將我的類模板定義與它們的聲明分開?
請勿在* .inl文件中包含任何內容。 – tim