我有幾個容器中的一類,對於包含 shared_ptr的對居住在堆中的對象實例,載體或地圖。C++智能指針const正確性
例如
template <typename T>
class MyExample
{
public:
private:
vector<tr1::shared_ptr<T> > vec;
map<tr1::shared_ptr<T> , int> h;
};
我想有這個類,有時會返回shared_ptrs 爲const對象(通過shared_ptr<const T>
)的公共接口,有時shared_ptr<T>
其中 我允許呼叫者突變的對象。我想要邏輯常量的正確性,所以如果我將 方法標記爲const,它不能更改堆上的對象。
問題:
1)我由tr1::shared_ptr<const T>
和tr1::shared_ptr<T>
互換性混淆。 當有人經過一個shared_ptr<const T>
shared_ptr的進級,做我把它存爲載體內shared_ptr<T>
或shared_ptr<const T>
和地圖或修改我的地圖,矢量類型(例如insert_elemeent(shared_ptr<const T>
OBJ)?
2)它是更好地實例化類如下:MyExample<const int>
?這似乎 不適當的限制,因爲我永遠不會返回shared_ptr<int>
?
「l值」。一個l值不需要賦值! – curiousguy 2011-12-15 06:36:30