-4

私のクラスPlaylistTrackTrack(そのクラスを拡張する)のサブクラスです:

 #include "track.h"
 #include "album.h"

 class PlaylistTrack : public Track //extends Track Class
 {
   private:
           Album & newAlbum; //or
           Album * newAlbum; //?


   public:
       PlaylistTrack(void);
      ~PlaylistTrack(void);

 };

私は正しい構文を持っていることを望んでいます。特定のトラックが含まれるアルバムへの参照またはポインターをどのように追加しますか?

4

2 に答える 2

2

あなたが何を求めているのか正確にはわかりませんが、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-11T17:56:47.893 に答える
0

次のような参照を追加します。

class PlaylistTrack : public Track //extends Track Class
{
   private:
       Album &album;
   public:
       PlaylistTrack(void);
      ~PlaylistTrack(void);

};

または次のようなポインタ:

class PlaylistTrack : public Track //extends Track Class
{
   private:
       Album *album;
   public:
       PlaylistTrack(void);
      ~PlaylistTrack(void);

};

もちろん、コンストラクターを変更して、アルバムとトラック番号(またはそれらの線に沿ったもの)を取得するか、少なくともアルバムとトラック番号のアクセサーを追加することをお勧めします。

于 2012-12-11T17:56:49.313 に答える