を私は映画とその上にrunメソッドのSET_NAME(名)の要素を取得したい別のクラスにおいて。私がそれをコピーしたくない場合、映画にアクセスする最も良い方法は何ですか?
慣用的方法は、アクセスされるべき要素への参照を露出するようになります。
class Movie {
public:
void set_name(const std::string& name) { name_ = name; }
private:
std::string name_;
};
class User {
std::vector<Movie> movies_;
public:
Movie& movie(size_t n) {
if(n >= movies_.size()) {
// throw out of bound exception or such
}
return movies.at(n);
}
};
クライアントコード:たぶん
void changeMovieName(User& userClass, size_t index, const std::string& newName) {
userClass.movie(index).set_name(newName);
}
だけ '映画を返すメソッド特定の要素のための* '。 – Barmar
また、「ムービー」を返す方が良いでしょう。 –
_ "私はそれをコピーしたくないのですか?" _ [@NaironAlex answer explain](http://stackoverflow.com/a/41192565/1413395) )。 –