考慮下面的類:投STL ::包含指向STL ::含載體常指針
class SomeInfo
{
private:
std::vector<someObj *> _myVector;
public:
const std::vector<const someObj*>& getInfoVector() const
{
return _myVector;
}
};
當我嘗試用gcc 4.1.2編譯,它給了我下面的錯誤:
error: invalid initialization of reference of type
‘const std::vector<const someObj*, std::allocator<const someObj*> >&’
from expression of type
‘const std::vector<someObj*, std::allocator<someObj*> >
如果我刪除'someObj *'前的'const',然後編譯,但我不想用非常量指針返回向量,因爲我不想讓它們引用的對象從我的SomeInfo類外部改變。在這個情況下,你會怎麼做?
爲什麼不首先使_myVector成爲常量指針的向量? – Ferruccio
因爲在後面階段,會有一個析構函數,它必須'刪除'常量指針,我知道這是允許的語言,但我認爲它很醜陋!從我的觀點來看,const是const的,不應該被觸及......這個向量成員不是這種情況,它不是const,我只是想讓const訪問它的值。 – pinpinokio