2009-12-24 66 views
3

我有以下模板结构:指针分配

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函数返回ty的指针PE

boost::shared_ptr<continuous_set> 

有了这个代码,我有以下错误:

过客 '常量的boost :: shared_ptr的' 作为 '这个' 的“的boost :: shared_ptr的说法<> &的boost :: shared_ptr的<> :: operator = (const boost :: shared_ptr &)[with Y = const continuous :: continuous_set,T = continuous :: continuous_set]'丢弃限定符

任何人都可以帮我解决这个问题吗?

回答

1

A const是否是成员函数?

如果我正在阅读你的代码,你试图从一个不允许的const成员函数中更改一个类的成员。请从成员函数中删除const或将成员mutable

所以,

mutable postc_params<scalar_type> my_postc; 

不过,我会照顾好这个方法。也许重新评估为什么改变方法my_postcconst。要么它不应该是const或它不应该改变my_postc

+0

啊..它确实是const。 – rayimag

+1

扔我2美分,这不是我认为使用'可变'的“好”地方。 – rlbond

1

你想分配给const指针按照错误信息:“过客‘常量的boost :: shared_ptr的’作为‘这个’参数”

你提到的成员函数肯定是const因此错误

您应该重新考虑您的设计,而不是在代码中将mutable放在这里和那里。