I have a playlist class which contains a vector of song pointers.

```
class Playlist {
public:
    Playlist();
    Playlist(string);
    vector<Song*> GetSongList() const;
private:
    vector<Song*> songs;
    string name;
};

```

The function `GetSongList()` is as follows:

```
vector<Song*> Playlist::GetSongList() const {
    return songs;
}

```

In my main method I have a vector of playlist pointers: `vector<Playlist*> playlists`

I want to remove a song pointer from a specific playlist, but I'm having trouble. This is my current code to remove the indicated song:

```
Playlist* desiredPlaylist = playlists.at(index);
vector<Song*> temporarySongList = desiredPlaylist->GetSongList();
cout << "Pick a song index number to delete: ";
cin >> index;
temporarySongList.erase(tempSongList.begin() + index);

```

When I erase the song from the vector and re-output the contents of `playlists.at(index).GetSongList()` the song is not removed. I think the reason why is that calling `GetSongList()` does not retrieve the actual song vector, but just returns a copy, so I'm not altering the original vector. How do I directly remove the song from the original?