首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据从std::向量存储到特征::向量时出错

将数据从std::向量存储到特征::向量时出错
EN

Stack Overflow用户
提问于 2020-01-03 08:46:35
回答 1查看 380关注 0票数 1
代码语言:javascript
复制
*error: no matching function for call to object of type 'Eigen::VectorXd' (aka 'Matrix<double, Dynamic, 1>')
DenseCoeffsBase.h:362:5: note: candidate function not viable: no known conversion from 'double *' to 'Eigen::Index' (aka 'long long') for 1st argument; dereference the argument with *
DenseCoeffsBase.h:115:41: note: candidate function not viable: no known conversion from 'double *' to 'Eigen::Index' (aka 'long long') for 1st argument; dereference the argument with *
DenseCoeffsBase.h:178:5: note: candidate function not viable: requires single argument 'index', but 2 arguments were provided
DenseCoeffsBase.h:423:5: note: candidate function not viable: requires single argument 'index', but 2 arguments were provided*

以上是当我试图将数据从标准向量存储到特征向量时提供的错误信息。

这就是我想要做的。我在通过这些命令返回的其他文件中生成了std向量,然后必须将它们转换为特征样式的向量,以便与其他代码集成。我已经尝试寻找方法将std矢量数据存储到本征元中,我在另一个堆栈溢出帖子中找到了这种特殊的方式。我不明白错误信息意味着什么。有人能告诉我我做错了什么吗?

此外,为了打印出数据,我得到了一个错误:“必须调用非静态成员函数的引用:您是指不带参数地调用它吗?”

我以为我通过调整大小使它成为一个静态矢量。

我将感谢帮助,并将补充任何必要的信息。我对C++有点陌生,我希望得到一些简单的解释,因为我对所有的基本面都不太熟悉。

代码语言:javascript
复制
    simulator.h

    Eigen::VectorXd currentStartMassVector_, currentEndMassVector_ ,specificImpulses_   ;
    std::vector<double>       StartMassVector_, endMassVector_ , SpecificImpulseVector_  ;
代码语言:javascript
复制
    simulator.cpp

    currentStartMassVector_.resize(numberOfStages_);
    currentEndMassVector_.resize(numberOfStages_);
    specificImpulses_.resize(numberOfStages_);

    StartMassVector_            = launchVehicle->getMassStartStages();
    endMassVector_              = launchVehicle->getMassEndStages();
    SpecificImpulseVector_      = launchVehicle->getCurrentSpecificImpulse();

    currentStartMassVector_(StartMassVector_.data(),StartMassVector_.size())  ;
    currentEndMassVector_(endMassVector_.data(),endMassVector_.size()) ;
    specificImpulses_(SpecificImpulseVector_.data(),SpecificImpulseVector_.size());

        std::cout << "start mass vector" <<  currentStartMassVector_.transpose << std::endl;
        std::cout << "end mass vector"   <<  currentEndMassVector_.transpose << std::endl;
        std::cout << "Isp vector" <<  specificImpulses_.transpose << std::endl;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-03 09:18:53

只能使用构造函数初始化以前未声明的向量。在这种情况下,本征向量已经在头文件中声明了。

可以使用Eigen::Map()将数据从std::vector<double>复制到Eigen::VectorXd,如下所示:

代码语言:javascript
复制
currentStartMassVector_ = Eigen::Map<Eigen::VectorXd>(StartMassVector_.data(),StartMassVector_.size()) ;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59575488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档