函数返回作为类初始化的参数(常量引用)吗?

时间:2019-05-25 22:52:53

标签: c++ function class parameter-passing

简化的问题是(使用下面的代码):

class_B没有默认的构造函数,因此B1B2必须在class_C构造的同时构造。

B2的第一个参数必须由class_A::cal计算。在这种情况下,A_sample.cal(pose)无法返回类型-const Eigen::Matrix3d& pose作为参数,并且用红色下划线标记:

  

对象的类型限定符与成员函数“ class_A :: cal”不兼容-对象​​类型为:const class_A

有什么办法可以使B2的结果初始化A_sample.cal(pose)

class class_A 
{
    public:
        Eigen::Matrix3d cal(const Eigen::Matrix3d& x)
        {   
            Eigen::Matrix3d y;
            // y calculated by x
            return y;
        }
};


class class_B
{
    public:
        class_B(const Eigen::Matrix3d& pose, const class_A& A_sample)
        {
            // ...
        }
};


class class_C
{
    public:
        class_B B1;
        class_B B2;

        class_C(const Eigen::Matrix3d& pose, const class_A& A_sample):
            B1(pose, A_sample),
            B2(A_sample.cal(pose), A_sample)
        {}
};

0 个答案:

没有答案