如何使用C++编写返回Eigen稀疏矩阵的函数
可返回Eigen稀疏矩阵的C++函数修正方案
原代码错误说明
- 核心错误1:Eigen的
SparseMatrix为模板类,使用时必须明确指定模板参数(常用的是元素类型,比如存储double类型就写SparseMatrix<double>),原代码所有使用SparseMatrix的位置都缺失了模板参数,无法通过编译。 - 核心错误2:return语句中不允许先定义局部变量再返回,语法不合法。
修正后可正常运行的代码
#include <Eigen/Sparse> // 明确指定返回值为double类型的稀疏矩阵 Eigen::SparseMatrix<double> f(){ // 直接构造临时对象返回即可,不需要额外定义变量 return Eigen::SparseMatrix<double>(10,10); } int main() { // 定义变量时也要补全模板参数,加Eigen::作用域可避免命名冲突 Eigen::SparseMatrix<double> M(10,10); M = f(); return 0; }
补充说明
如果你的代码里已经提前声明了using namespace Eigen;,可以省略所有Eigen::作用域前缀,但依然必须保留SparseMatrix<double>的模板参数声明。
内容的提问来源于stack exchange,提问作者debo
相关产品推荐
相关产品推荐

