У меня есть задание Я работаю над тем, что я натолкнулся на следующую ошибку и не могу исправить. Может кто-нибудь объяснить эту ошибку и дать возможные решения для ее устранения? Последняя ночь кода - это ошибка. Любое понимание было бы оценено.Невозможно преобразовать карту <строка, класс> Значение в присваивании
81:43: ошибка: не удается преобразовать 'альбом' в 'станд :: карта, альбом *> :: mapped_type {ака альбом *}' в назначении
class song {
public:
string title;
int time;
int track;
};
class album{
public:
map <int, song *> songs;
string name;
int time;
};
class artist{
public:
map <string, album *> albums;
string name;
int time;
int nsongs;
};
int main (int argc, char* argv[]){
song song;
album album;
artist artist;
const string file = argv[1];
ifstream infile;
infile.open(file.c_str());
int itime;
int secs, mins, hours;
char extra;
string stitle, stime, sartist, salbum, sgenre, strack;
stringstream ss;
if(infile.fail()){
cerr << "Could not open file" << endl;
exit (1);
}
while (infile >> stitle >> stime >> sartist >> salbum >> sgenre >> strack){
replace(stitle.begin(), stitle.end(), '_', ' ');
song.title = stitle;
ss << stime;
ss >> mins >> extra >> secs;
itime = (mins * 60) + secs;
ss.str("");
ss.clear();
mins = itime/60;
secs = itime%60;
song.time = itime;
song.track = atoi (strack.c_str());
replace(salbum.begin(), salbum.end(), '_', ' ');
album.name = salbum;
replace(sartist.begin(), sartist.end(), '_', ' ');
artist.name = sartist;
if(artist.albums.count(artist.name) == 1){
cout << "Old Artist: " << artist.name << endl;
cout << "New Artist: " << artist.name << endl;
}
else{artist.albums[artist.name] = album;}
Поскольку я не вижу наследования между объектами, вы не используете ссылки в картах вместо указателей? Тогда у вас не будет проблем с распределением памяти, и вы можете удалить указатели с карт (и код должен работать) – JosiP
Просто предупреждение. переменные с тем же идентификатором, что и типы, являются ** плохой идеей. Такие вещи, как «альбом альбома» и «песня», и «художник-художник», делают предстоящий код трудным для чтения и чрезвычайно подвержены тонким ошибкам. – WhozCraig
Да, я планирую изменить имена переменных. –