Class 带有 Eigen 模板的模板

Class template with Eigen templates

我想制作一个简单的模板 class,其中包含一个具有动态大小的 Eigen 成员。我不断收到隐式实例化错误。不管怎样,我想做的是这样的:

template <class T>
class MyTemplateClass
{
public:
    MyTemplateClass(DenseBase<Derived>& eigenObject);
private:
    SomeSortOfTypeHereForDynamicAllocation eigenMember;
}

MyTemplateClass<T>::MyTemplateClass(DenseBase<T>& eigenObject)
{
     eigenMember = eigenObject;
}

在模板化 class 中声明模板化成员函数(或构造函数)时,您需要添加另一个 template 结构,如下所示:

// ...
public:
    template<class Derived>
    MyTemplateClass(DenseBase<Derived>& eigenObject);
// ...

当您以后想要实现它时,您需要将两个模板列表分开编写 template<>:

template<class T>       // template(s) for actual class
template<class Derived> // template(s) for method
MyTemplateClass<T>::MyTemplateClass(DenseBase<Derived>& eigenObject)
  : eigenMember(eigenObject) // Note: it is usually better to initialize members using the initializer list
{
    // rest of constructor is empty
}