Eigen :: Ref <>作为成员变量

解码器

我需要一个具有Eigen :: Ref变量的类作为静态成员,该成员将通过init静态方法进行初始化像这样的东西:

class CostFunction {
  public:
    static Eigen::Ref<Eigen::VectorXd> data;
    static void init(const Eigen::Ref<Eigen::VectorXd>& d) {
        data = d;
    }
    CostFunction() {}
};
int main() {
    Eigen::VectorXd data = Eigen::VectorXd::Random(30);
    CostFunction cf;
    cf.init(data);
    return 0;
}

这不会编译。我收到一个看起来像这样的错误:

/var/tmp/doNotRemove/builds/fit3dceres/RHEL6_AMD64_GCC484_OPT/include/eigen3/Eigen/src/Core/Ref.h: In instantiation of ‘Eigen::RefBase<Derived>& Eigen::RefBase<Derived>::operator=(const Eigen::RefBase<Derived>&) [with Derived = Eigen::Ref<const Eigen::Matrix<double, -1, 1> >]’:                                                                                  
/var/tmp/doNotRemove/builds/fit3dceres/RHEL6_AMD64_GCC484_OPT/include/eigen3/Eigen/src/Core/Ref.h:229:77:   required from here                                                      
/var/tmp/doNotRemove/builds/fit3dceres/RHEL6_AMD64_GCC484_OPT/include/eigen3/Eigen/src/Core/util/Macros.h:608:26: error: use of deleted function ‘Eigen::MapBase<Eigen::Ref<const Eigen::Matrix<double, -1, 1> >, 0>& Eigen::MapBase<Eigen::Ref<const Eigen::Matrix<double, -1, 1> >, 0>::operator=(const Eigen::MapBase<Eigen::Ref<const Eigen::Matrix<double, -1, 1> >, 0>&)’                                                                                                                                                                             
     Base::operator=(other); \

一般而言,看起来Eigen :: Ref无法分配给另一个Eigen :: Ref。有谁知道为什么有此限制,以及是否有办法将Ref存储为类的静态成员变量?

PS:我使用的是Eigen :: Ref,因为此处的文档:https : //eigen.tuxfamily.org/dox-devel/classEigen_1_1Ref.html听起来像是正确的选择,它是实现函数时要使用的通用类型它应该适用于大多数本征类型(例如,在我的情况下,在VectorXd和Map上)。

加格尔

在您的情况下,您最好使用VectorXd,否则必须确保VectorXd传递给init的对象永远不会被破坏。

Ref此处使用a的唯一原因将是允许data使用例如a的列进行初始化Matrix而没有任何副本。

最后,如果您想重新分配ARef来引用另一个缓冲区,请使用new放置来重新调用Ref的构造函数。不要忘记先调用析构函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Eigen :: Ref传递指针

来自分类Dev

正确使用Eigen :: Ref <>类

来自分类Dev

ref合格的成员函数作为模板参数?

来自分类Dev

将 Ref 对象作为类成员

来自分类Dev

Eigen :: Ref <>与std :: reference_wrapper <>的优缺点是什么?

来自分类Dev

为什么矩阵在通过 Ref & in Eigen 时被复制

来自分类Dev

CUDA和Eigen的成员“已被声明”错误

来自分类Dev

使用Eigen :: Map <Own :: MatrixXd>作为函数参数或键入Eigen :: MatrixXd

来自分类Dev

指向成员变量作为静态成员的指针

来自分类Dev

使用成员变量作为谓词

来自分类Dev

使用成员变量作为谓词

来自分类Dev

C ++本征:'Options':不是'Eigen :: MatrixBase <Derived>'的成员

来自分类Dev

Eigen中的C ++静态数据成员初始化错误

来自分类Dev

StencilJS JSX使用ref作为Prop

来自分类Dev

传递ref作为函数参数React Native

来自分类Dev

无法将“ cxnDb”作为ref或out参数传递,因为它是“使用变量”

来自分类Dev

Eigen3展平矩阵作为矢量

来自分类Dev

使用Boost :: odeint和Eigen :: Matrix作为状态向量

来自分类Dev

Eigen3展平矩阵作为矢量

来自分类Dev

使用Boost :: odeint和Eigen :: Matrix作为状态向量

来自分类Dev

ref或out参数必须是可分配的变量

来自分类Dev

C#7.3+ ref变量的预期行为?

来自分类Dev

如何访问作为类成员变量的对象向量的成员变量?

来自分类Dev

如何同时接受ref和non ref值作为函数参数

来自分类Dev

具有Ref资格的成员函数的目的是什么?

来自分类Dev

Ref限定成员函数的设计打破了常量值

来自分类Dev

在RValue对象上调用LValue ref合格成员函数

来自分类Dev

如何使C ++ / CLI ref类成为WCF的数据成员?

来自分类Dev

不变类中的对象作为成员变量

Related 相关文章

热门标签

归档