Он теряется (на самом деле это еще хуже: у вас утечка памяти!), Потому что вы неправильно используете обратный вызов. Вы передаете &album
и теперь вам нужно привести указатель void*
и заполнить его , а не перезаписать его (на самом деле, строка data = album
не имеет никакого эффекта вне функции fillAlbum
, вы просто перезаписываете локальную переменную). Попробуйте это:
int fillAlbum(void* data, int argc, char** argv, char** azColName)
{
Album* album = static_cast<Album*>(data); // <-- this line is crucial
album->setName(argv[1]);
album->setCreationDate(argv[3]);
album->setOwner(std::stoi(argv[2]));
return 0;
}