Mak*_*gan 1 c++ templates compilation
我已经实现了半边数据结构作为模板库。原因是,我必须将该库从 glm 移植到 eigen,然后我必须将其扩展为在任意维度上工作,但仅限于 3D。
因此,我发誓永远不会只是为了获得一半优势而到处改变类型。
然而,尽管我的 half edge 按预期运行和执行,但它的标头太大,以至于在包含它的任何文件上占用了 30% 左右的编译时间。
令人沮丧的是,也许图书馆所做的 80% 的工作完全不知道几何数据是什么。
一般概述是这样的
template<typename Data>
class HalfMesh
{
vector<Data> data;
vector<HalfEdge> verts;
vector<HalfEdge> edges;
vector<Face> faces;
void SomeMethod(){/* uses only verts, edges, and faces */}
};
Run Code Online (Sandbox Code Playgroud)
在这种情况下verts, edges, faces,都是非模板化类,并且该结构所做的 80% 涉及这 3 个类,而不是Data.
我想减少编译时间,所以理想情况下我想将一些成员方法移入 cpp 文件并移出标头。
是否有一些语法告诉 c++“所有这些函数对于任何模板都是相同的,链接到 cpp 文件并让我将实现移出标头”?