【发布时间】:2017-04-10 04:21:30
【问题描述】:
我想在我的 dll 项目中使用我自己的一些模板类。为了做到这一点,建议here 我仍然通过包含我的类头文件的定义(作为.inl 文件)将我的类模板声明与其定义分开。我尝试使用的类是我自己的向量类,它只包装 std::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 文件中包含任何内容。
标签: c++ templates dll circular-dependency