title: Error: a pointer to a bound function may only be used to call the function
body: <p>I've been trying to assign a function pointer (of a class) to a member function (of another class) like this:</p>
  
  <pre><code>--- Game.h ---
  #ifndef GAME_H
  #define GAME_H
  
  #include "Screen.h"
  
  class Game
  {
  private:
      void (*HandleCurrentScreen)();
  
  public:
      void SetScreen(const Screen&amp; newScreen);
  };
  
  #endif
  
  
  
  --- Game.cpp ---
  #include "Game.h"
  #include "Screen.h"
  
  void Game::SetScreen(const Screen&amp; newScreen)
  {
      HandleCurrentScreen = newScreen.Handle;    //Produces the error
  }
  
  
  
  --- Screen.h ---
  #ifndef SCREEN_H
  #define SCREEN_H
  
  class Screen
  {
  public:
      void Handle();
  };
  
  #endif
  
  
  
  --- Screen.cpp ---
  #include "Screen.h"
  
  void Screen::Handle()
  {
      ...
  }
  </code></pre>
  
  <p>I get this error:</p>
  
  <blockquote>
    <p>error C3867: 'Screen::Handle': function call missing argument list; use '&amp;Screen::Handle' to create a pointer to member</p>
  </blockquote>
  
  <p>It seems to work fine if <code>HandleCurrentScreen</code> points to a function that is also defined in the Game class. I've been looking for other people with this problem, but none seem to have it in cases like this.</p>
  
  <p>A solution that might work is something like this:</p>
  
  <pre><code>Screen* p_currentScreen;
  
  void Game::SetScreen(const Screen&amp; newScreen)
  {
      p_currentScreen = &amp;newScreen;
  }
  </code></pre>
  
  <p>and then instead of calling <code>HandleCurrentScreen</code> I can call <code>p_currentScreen-&gt;Handle()</code>, but this seems slightly less efficient to me. </p>
  
  <p>What can I do to fix this? Should I just use a pointer to a class instead of a function pointer?</p>
  
  <p>Any advice is welcome.</p>