首页 > 解决方案 > Eclipse 无法在单独的文件中解析具有显式实例化的模板类

问题描述

我有以下模板类的代码结构:

// LagrangeMultiplier.hpp
template <int order>
class LagrangeMultiplier
{
...
};
// LagrangeMultiplier.cpp
#include "LagrangeMultiplier.hpp"

template <int order>
LagrangeMultiplier<order>::LagrangeMultiplier(...)
{
...
}

#include "LagrangeMultiplier.inst"
// LagrangeMultiplier.inst
template class LagrangeMultiplier<6>;
...
template class LagrangeMultiplier<5810>;

也就是说,我在一个带有.inst扩展名的文件中明确列出了特定的模板实例化,然后将其包含在我的.cpp文件末尾。这是受 dealii 处理模板的启发。

这编译得很好,给了我我想要的。但是,每当我尝试在另一个源文件中使用这个类时,Eclipse 都会告诉我Type 'LagrangeMultiplier<order>' could not be resolved. 这对我来说很烦人——有什么方法可以让 Eclipse 识别模板类的这些特定实例?

编辑:以下是我将如何在另一个文件中使用它:

// lagrange_test.cpp
#include "LagrangeMultiplier.hpp"

int main()
{
    constexpr int order = 2702;
    LagrangeMultiplier<order> lm();
    ...
    return 0;
}

标签: c++eclipsetemplateseclipse-cdt

解决方案


推荐阅读