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

时间:2012-12-10 20:39:04

标签: c++ pointers inheritance

我有三个类 - Album,Track和PlaylistTrack,它们扩展了Track。

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

我的问题是,如何在PlaylistTrack类中获取指向包含它的Album的指针?

2 个答案:

答案 0 :(得分:1)

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

请注意,PlaylistTracks可以引用包含它们的Album对象,但不能通过调用成员指针上的delete来删除它。

答案 1 :(得分: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;
}