无法转换'const ScalarMultipleReturnType错误

时间:2015-07-29 11:55:50

标签: c++ c++11 eigen

运行我的代码会出现以下编译错误:

  

无法在初始化时将'const ScalarMultipleReturnType {aka const Eigen :: CwiseUnaryOp,const Eigen :: Matrix>}'转换为'double'      double tempSum = deltaT *(vectorB(i)-vectorB2(i))* k [i];

在以下行:

double tempSum = deltaT*(vectorB(i)-vectorB2(i))*k[i];
truncError = truncError + tempSum;

我已将变量vectorB和vectorB2定义为:Eigen::VectorXd vectorB;并分别为两个向量初始化为vectorB = Eigen::VectorXd::Zero(size);

k定义为:std::vector<Eigen::MatrixXd> k(size);

deltaT的类型为double

每个尽管k是矩阵的向量,但每个矩阵只有一个值。例如:k [0]是单个双精度值。

有人可以帮助我进行类型转换吗?我认为这就是造成这个问题的原因。我希望将表达式double tempSum = deltaT*(vectorB(i)-vectorB2(i))*k[i]的RHS转换为双变量。

1 个答案:

答案 0 :(得分:0)

所以我尝试创建一个临时矩阵,即Eigen::MatrixXd temp = k[i];,因为我知道k [i]是一个单元素矩阵,我在表达式double tempSum = deltaT*(vectorB(i)-vectorB2(i))*temp(0,0);中使用它并且它可以正常工作。不过,这是一个非常粗略的解决方案,也是一个非常专业的解决方案