Since the CloseAndSaveCallback is a function inside a class, it looks like this for the compiler:
void CloseAndSaveCallback(const AddObjectDialog* this, Obj obj)
std::bind takes the following parameters: the function and the parameters. Since "this" is always the first parameter, it should always be before the other parameters in the bind call. The bind call needs to look like this:
std::bind(&AddObjectDialog::CloseAndSaveCallback, this, p.object)
The bindCallback function has one version where the first parameter is the function and the second one is the 'this' pointer, but this is actually only a shortcut so that you don't have to call std::bind yourself. But if you need a function that has parameters then you must use the normal bindCallback function. So the line should look like this:
p.button->bindCallback(std::bind(&AddObjectDialog::CloseAndSaveCallback, this, p.object), tgui::Button::LeftMouseClicked);