C++ 如何获取对包含对象的引用

C++ How To Get Reference To Containing Object?

本文关键字:包含 对象 引用 获取 何获取 C++      更新时间:2023-10-16

我有三个类 - 专辑、曲目和播放列表跟踪,可扩展跟踪。

Track 包含一个 Time 对象,以及用于艺术家和标题的两个字符串。专辑包含曲目矢量和标题字符串。PlaylistTrack 扩展了 Track,因为它包含一个指向它所属的专辑的指针。

我的问题是,我怎样才能获得指向在类 PlaylistTrack 中包含它的专辑的指针?

我真的不明白你在问什么,但听起来你想有一种办法从 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;
}

曲目属于给定的专辑,并且这种关系永远不会改变,因此最简单的解决方案是将包含 Album 对象的指针传递给 Track 对象的构造函数(或 PlaylistTrack,如果您喜欢这样),并将其保存在构造函数代码中的指针成员中。

请注意,播放列表曲目可以引用包含它们的 Album 对象,但不得通过在成员指针上调用 delete 来删除它。