我有以下模板结构:
template <typename scalar_type>
struct postc_params{
scalar_type delta;
unsigned int time_horizon;
matrix_math::matrix<scalar_type> dynamics;
boost::shared_ptr<continuous_set> invariant_set_ptr;
boost::shared_ptr<continuous_set> input_set_ptr;
boost::shared_ptr<continuous_set> initial_set_ptr;
};
现在,我有一个模板化的类,其中包含上述结构类型的私有成员
template <typename scalar_type>
class A{
....
private:
....
postc_params<scalar_type> my_postc;
};
在A类的成员函数定义中,我有以下代码行:
my_postc.initial_set_ptr = my_postc.initial_set_ptr->transform(some_obj);
transform函数返回一个类型为
的指针boost::shared_ptr<continuous_set>
使用此代码,我有以下错误:
将'const boost :: shared_ptr'作为'boost :: shared_ptr&lt;的'this'参数传递&GT;&安培;升压:: shared_ptr的&LT; &GT; ::运算= (const boost :: shared_ptr&amp;)[with Y = const continuous :: continuous_set,T = continuous :: continuous_set]'丢弃限定符
任何人都可以帮助我解决问题吗?
答案 0 :(得分:1)
成员函数是否在A const
?
如果我正确地阅读你的代码,你试图从一个不允许的const成员函数中改变一个类的成员。从成员函数中删除const
或创建成员mutable
。
所以,
mutable postc_params<scalar_type> my_postc;
但是,我会照顾这种方法。也许重新评估改变my_postc
的方法为const
的原因。它不应该是const
,也不应该更改my_postc
。
答案 1 :(得分:1)
您正尝试根据错误消息分配给const
指针:“将'const boost :: shared_ptr'传递为'this'参数”
你提到的成员函数肯定是const
因此错误
你应该重新考虑你的设计而不是在你的代码中抛出mutable
。