简化的问题是(使用下面的代码):
class_B
没有默认的构造函数,因此B1
和B2
必须在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)
{}
};