ここに初めて書く。私のような他のいくつかの質問を見ましたが、私の問題を解決できませんでした。曲、プレイリスト、アルバム、アーティストの4つのクラスがあります。プレイリストは曲の配列で構成されています。アルバムはプレイリストを継承し、さらに機能性があり、アーティストはアルバムの配列やその他のもので構成されています。
Album(char* _name, Song* songs,int _sales ,int _year,int n):Playlist(songs,n)
{
name = new char[strlen(_name)+1];
strcpy(name,_name);
salesCount=_sales;
year = _year;
};
Playlist::Playlist(Song* _songlist, int n)
{
if(n > 20)
{
cout<<"The number of song must be lesser or equal to 20"<<endl;
return;
}
SongList = new Song[n];
for(int i = 0 ; i<n; i++)
{
SongList[i] = _songlist[i];
}
numberOfSongs=n;
}
このコンストラクターを使用してアルバムを作成する場合、問題はありませんが、このコンストラクターで作成されたアルバムで構成されるアルバムの配列を作成しようとすると、メモリアクセス違反が発生します。何か案は ?
さて、コードを少し更新しました。これが私がmainメソッドでやろうとしていることです:
Song newSong("My Song", 9, 231),mySong("Your Song", 8 , 180),yourSong("His Song",7,135), herSong("Her Song",8,431);
Song songs[4] = {newSong, mySong,yourSong,herSong};
Album yourAlbum("My Album",songs,200000, 2010, 4);
yourAlbum.PrintInfo(); //<------- WORKS
Album albums[1]; //<------ It calls the deffault constructor of Album and after it gives me //"Source not available"
//When I try to declare it like this Album albums[1] = { yourAlbum } ; it gives me access violation
Artist myArtist("blake", albums);
myArtist.PrintArtistInfo();