Adding a TXXX frame to an ID3v2 tag

Scott Wheeler scott at taglib.org
Wed Nov 14 18:44:20 GMT 2018


On 14/11/2018 19:35, Fred Gleason wrote:
> TagLib::MPEG::File *file=new TabLib::MPEG::File(“my_file.mp3”,false);
> TagLib::ID3v2::Tag *tag=(TagLib::ID3v2::Tag *)file->tag();

> [...] I suspect that my problem may be with the simplistic cast from 
> TagLib::Tag * to TabLib::ID3v2::Tag *

The problem is that the result of file->tag() *isn't* an ID3v2::Tag, so 
casting it to that fails.  (It's a special class that's a union of the 
available tag types for that file.)  To get the ID3v2 tag, you have to 
use the ID3v2Tag() method:

https://taglib.org/api/classTagLib_1_1MPEG_1_1File.html#aebe5029bca925e9ed7002b00244c1240

Also, in general, in C++, using C-style casts "(Foo *) p" isn't 
recommended -- you should use, generally, either dynamic_cast<Foo *>(p) 
(which does run-time type checking, and in this case would return 0), or 
static_cast<Foo *>(p) (which does some basic compile-time sanity checking).

-Scott



More information about the taglib-devel mailing list