我发现我可以像这样创建一个模板化的特征函数:
template <>
CIL_EXPORTS
void gpa<std::complex<float>>(const Eigen::EigenBase<std::complex<float>>& Data);
在函数中,我还需要来自 DenseBase 的方法。我如何从两个基类中访问方法?
表达式“Eigen::EigenBase < std::complex < float >>”没有意义。EigenBase 模板参数是派生类,而不是标量类型。它必须是一个矩阵、数组等。一般来说它应该是一个模板参数。请先阅读此页。
无论如何,一旦获得正确的 EigenBase 或 DenseBase,您就可以使用 arg.derived() 或将其转换为派生类型一次来访问派生类成员(而不是基类!): const Derived& mat(arg.derived( ));