1

Album、Track、および Track を拡張する PlaylistTrack の 3 つのクラスがあります。

Track には Time オブジェクトと、アーティストとタイトルの 2 つの文字列が含まれています。Album には、トラックのベクトルとタイトルの文字列が含まれています。PlaylistTrack は、それが属する Album へのポインターを含むという点で Track を拡張します。

私の質問は、クラス PlaylistTrack に含まれる Album へのポインターを取得するにはどうすればよいですか?

4

2 に答える 2

1

あなたが何を求めているのか正確にはわかりませんが、PlaylistTrackからアルバムを取得する方法が必要なようです。

class PlaylistTrack : public Track
{
     public:
         PlaylistTrack(Album * owner){ m_owner = owner; }
         Album* getAlbum(){return m_owner;}
     private:
         Album* m_owner;

}

int main()
{

    Album albumA;
    PlaylistTrack newTrack(&albumA);

    //Now the track knows what album it belongs to, but the album does not own the track yet.
    std::cout << "New Track's Album: " << newTrack.getAlbum.getTitle() << std::endl;

    //Now the album owns this track
    albumA.addTrack(newTrack);

    //The PlaylistTrack constructor could add itself to the album if you wanted to I think.

    return 0;
}
于 2012-12-10T20:58:44.207 に答える
1

トラックは特定の Album に属し、この関係は決して変わらないため、最も簡単な解決策は、含まれている Album オブジェクトのポインターを Track オブジェクト (または、必要に応じて PlaylistTrack) のコンストラクターに渡し、保存することです。コンストラクターのコードのポインター メンバー。

deletePlaylistTracks はそれらを含む Album オブジェクトを参照できますが、メンバー ポインターを呼び出して削除してはならないことに注意してください。

于 2012-12-10T20:55:20.057 に答える