2016-02-29 86 views
0

我有一個類繼承了一個stl向量,我需要兩個函數返回拋出向量,一個可變,另一個不可變。靜態類拋出類指向一個常量指針

class My : public vector<int> { 
    public: 

    vector<int>& array() {return *static_cast<vector<int>*>(this);} 
    const vector<int>& array() const {return *static_cast<vector<int>*>(this);} 
} 

爲什麼它無法編譯第二個const超負荷?

+0

因爲你沒有返回從第二個了'常量矢量&'。 – callyalater

+0

'static_cast'正在嘗試刪除'this'指針的常量並返回類型爲'vector &'的東西。請參閱[這裏](http://en.cppreference.com/w/cpp/language/static_cast)瞭解更多信息。 – callyalater

+0

僅供參考,'const_cast'是你想要的,而不是'static_cast'。 –

回答

4

演員試圖刪除const -ness,這不起作用。

但是,你應該能夠編寫

vector<int>& array() {return *this;} 
const vector<int>& array() const {return *this;}