【发布时间】:2020-04-11 14:04:33
【问题描述】:
Eigen 的文档解释了如何将Eigen::Ref 用作函数参数。将它也用作函数返回值是不是一个好主意?
例如
class XyTracker : public XyListener {
public:
XyTracker() = default;
XyTracker(XyTracker&&) = default;
XyTracker& operator=(XyTracker&&) = default;
const Eigen::Ref<const Eigen::ArrayXXd> Xs() const;
const Eigen::Ref<const Eigen::ArrayXd> Ys() const;
// XyListener
void OnXy(const Eigen::VectorXd& x, double y) final;
private:
Eigen::ArrayXXd xs_;
Eigen::ArrayXd ys_;
Eigen::Index n_ = 0;
};
inline const Eigen::Ref<const Eigen::ArrayXXd> XyTracker::Xs() const {
return xs_.topRows(n_);
}
inline const Eigen::Ref<const Eigen::ArrayXd> XyTracker::Ys() const {
return ys_.head(n_);
}
【问题讨论】:
-
至少,您必须注意确保生命周期。
-
使用 Eigen::Ref 作为返回类型没有错