To restate my comment as an answer, when binding a function to a slate widget, the method must have the const
specifier.
That is, in your instance:
TOptional GetPercentHealth();
Should be declared:
TOptional GetPercentHealth() const;
That is, it won’t change the instance by calling this method.