我做了一個類CardDeck(C++)其中有vector<card*> deck
私人會員。矢量容器的運算符[] - 返回引用?
我重載運算符[]這一類這樣的:
Card* CardDeck::operator[](int i) const{
return this->deck[i];}
在這裏你可以看到它返回卡*,而不是卡* &。當我試圖把卡* &它沒有編譯,但是,從我所瞭解的矢量[我]返回第i個元素參考 - 像寫作here。
那麼怎麼會這樣編譯而不是用卡* &?
我做了一個類CardDeck(C++)其中有vector<card*> deck
私人會員。矢量容器的運算符[] - 返回引用?
我重載運算符[]這一類這樣的:
Card* CardDeck::operator[](int i) const{
return this->deck[i];}
在這裏你可以看到它返回卡*,而不是卡* &。當我試圖把卡* &它沒有編譯,但是,從我所瞭解的矢量[我]返回第i個元素參考 - 像寫作here。
那麼怎麼會這樣編譯而不是用卡* &?
您不能從const
成員函數返回非const
引用,因爲它允許調用方修改對象。例如,返回Card*
的副本,或者如果您想允許調用者修改指針,請不要將您的函數標記爲const
。
另外請注意,您可以兼得,如果你希望能夠從const
上下文從非const
下取得的值並進行修改:
Card* CardDeck::operator[](int i) const;
Card*& CardDeck::operator[](int i);
什麼錯誤信息沒有編譯器給你? – aschepler