AddObject() expects a TObject* pointer, but you are trying to pass it a TObject object instance that is constructed with an 'int' as input. TObject has no such constructor, that is why you are getting an error.

In fact, integer-to-pointer and pointer-to-integer casts are one of the main reasons reinterpret_cast even exists in the first place.

Now, that being said, note that this approach only works in VCL, and FMX non-ARC systems. Under ARC, TObject* pointers MUST point at valid TObject instances, so you would have to wrap the 'int' in a TObject-derived class:

Otherwise, use a completely different design that does not rely on storing the 'int' in the ListBox itself. Store it in an array/list off to the side, and then use ListBox indexes to access that array/list when needed. This design better separates your data from your UI: