【发布时间】:2016-11-05 05:08:14
【问题描述】:
我对以下代码有问题,经过一些研究,我在单独的行中单独指出了问题,但现在不知道如何解决它。
typedef double ComplexType;
typedef std::complex<ComplexType> Complex;
typedef Eigen::SparseMatrix<Complex, Eigen::ColMajor, long long> SparseMatrixT;
typedef Eigen::SparseVector<Complex, Eigen::ColMajor, long long> SparseVectorC;
typedef Eigen::SparseLU<SparseMatrixT, Eigen::COLAMDOrdering< long long>> SolverT;
SparseVectorC Solve(const Eigen::Ref<const SparseVectorC>& Rhs)
{
auto _Result = m_LU.solve(Rhs); //SolverT m_LU; defined and "prepared" elsewhere
SparseVectorC Result = _Result; // cause error C2512
return Result;
}
错误显示
\eigen\src\core\solve.h(125):错误 C2512: 'Eigen::internal::evaluator>': 否 适当的默认构造函数可用
如何在任一稀疏密集向量中获得结果(因为它不应该像 Rhs 那样稀疏)。矩阵大小(可能)很大,因此额外的副本会令人不快。
变量 _Result 显然是稀疏的,但是对稀疏或密集向量(使用可能是复制的可用方法 toDense() )的赋值(有或没有转换)都不起作用。
【问题讨论】: