我想创建一个包含动态大小的Eigen成员的简单模板类。我一直收到隐式实例化的错误。无论如何,我想要做的是这样的:
template <class T>
class MyTemplateClass
{
public:
MyTemplateClass(DenseBase<Derived>& eigenObject);
private:
SomeSortOfTypeHereForDynamicAllocation eigenMember;
}
MyTemplateClass<T>::MyTemplateClass(DenseBase<T>& eigenObject)
{
eigenMember = eigenObject;
}
答案 0 :(得分:0)
在模板化类中声明模板化成员函数(或构造函数)时,需要添加另一个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
}