Set function pointer error

Hello
I have a problem with setting function pointer to another object
I have two classes, one is the object that must be hold pointer of function of second class:


UCLASS()
class MYPROJECT_API UMyItemWidget : public UUserWidget
{
   ...
   typedef void(UMyItemWidget::*ItemChangeState)(int32 ID);

public:
   void SetChangeStateCallback(ItemChangeState changeStateFunct) { _changeStateFunct = changeStateFunct; }

   ItemChangeState _changeStateFunct = nullptr;
};

//Second class, *.h file
UCLASS()
class MYPROJECT_API UArrOfWidgets : public UUserWidget
{
   ...
public:
   void Setup();
   void OnChangeItem(int32 itemID);
};

//Second class, *.cpp file
UArrOfWidgets::Setup()
{
   ...
   //ItemWidget is object of UMyItemWidget class
   ItemWidget->SetChangeStateCallback(&UArrOfWidgets::OnChangeItem); //Error in that line
   //error C2664: void UMyItemWidget::SetChangeStateCallback(UMyItemWidget::ItemChangeState)': cannot convert argument 1 from 'void (__cdecl UArrOfWidgets::* )(int32)' to 'UMyItemWidget::ItemChangeState'
}

UArrOfWidgets::OnChangeItem(int32 itemID)
{
  ...
}

What I have missed?