我正在寻找一种方法来制定一个具有:
- 使用具有最大“常量”的指针的 STL 容器的接口
- 但它在内部改变了指向的对象
- 与非常量模拟相比,没有额外的运行时开销
理想情况下,与非 const 版本相比,该解决方案不会编译为额外的代码,因为 const/non-const-ness 只是对程序员的帮助。
这是我到目前为止所尝试的:
#include <list>
#include <algorithm>
using namespace std;
typedef int T;
class C
{
public:
// Elements pointed to are mutable, list is not, 'this' is not - compiles OK
list<T *> const & get_t_list() const { return t_list_; }
// Neither elements nor list nor' this' are mutable - doesn't compile
list<T const *> const & get_t_list2() const { return t_list_; }
// Sanity check: T const * is the problem - doesn't compile
list<T const *> & get_t_list3() { return t_list_; }
// Elements pointed to are immutable, 'this' and this->t_list_ are
// also immutable - Compiles OK, but actually burns some CPU cycles
list<T const *> get_t_list4() const {
return list<T const *>( t_list_.begin() , t_list_.end() );
}
private:
list<T *> t_list_;
};
如果没有类型转换的解决方案,我想要关于如何制定具有所描述属性的类的替代建议。