' 给 'delete' 的参数,预期的指针,c++,eigen,tensor"/>

首页 > 解决方案 > 错误:输入'class Eigen::Tensor' 给 'delete' 的参数,预期的指针

问题描述

我正在尝试删除使用 Eigen::Tensor 创建的张量

N1, N2 , N3 是 int 的向量

N1 << 1,2,3
N2 << 4,3,5
N3 << 9,7,8


 for(int i = 0; i < 3; i++ )
{
 Eigen::Tensor<double, 3> Hs(N1(i),N2(i),N3(i));

 Hs.setZero();

 delete Hs;
  }

如何删除我的张量?我必须清除它并改变它的大小

先感谢您

标签: c++eigentensor

解决方案


你的编译器告诉你什么是错的。H不是指针,也没有在堆上分配。只需删除delete H就可以了,因为它会在超出范围时被破坏。

这就是创建 3x3 矩阵的方式:

#include <Eigen/Sparse>


int main(void)
{
    Eigen::Matrix<double, 3, 3> H;
    H.setZero();
}

只是为了完整性(如果你不需要,不要这样做):如果你写了

Eigen::Tensor<double, 3> H* = new Eigen::Tensor<double, 3>(N1,N2,N3);

那么删除将是合适的。


推荐阅读