title: C++ Function call via an object with public member pointer to function, without using dereference operator
body: <p>Alright, I think the title is sufficiently descriptive (yet confusing, sorry).</p>
  <p>I'm reading this library: <a href="http://playground.arduino.cc/Code/Timer1" rel="nofollow noreferrer">Timer1</a>.</p>
  <p>In the header file there is a public member pointer to a function as follows:</p>
  <pre><code>class TimerOne
  {
    public:
    void (*isrCallback)();  // C-style ptr to `void(void)` function
  };
  </code></pre>
  <p>There exists an instantiated object of the TimerOne class, called &quot;Timer1&quot;.</p>
  <p>Timer1 calls the function as follows:</p>
  <pre><code>Timer1.isrCallback();
  </code></pre>
  <p>How is this correct? I am familiar with calling functions via function pointers by using the dereference operator.</p>
  <p>Ex:</p>
  <pre><code>(*myFunc)();
  </code></pre>
  <p>So I would have expected the above call via the object to be something more like:</p>
  <pre><code>(*Timer1.isrCallback)();
  </code></pre>
  <p><strong>So, what are the acceptable options for calling functions via function pointers, as both stand-alone function pointers <em>and</em> members of an object?</strong></p>
  <h2>See also:</h2>
  <ol>
  <li>[very useful!] <a href="https://stackoverflow.com/q/4295432/4561887">Typedef function pointer?</a></li>
  </ol>
  <h2>Summary of the answer:</h2>
  <p>These are all valid and fine ways to call a function pointer:</p>
  <pre class="lang-cpp prettyprint-override"><code>myFuncPtr();
  (*myFuncPtr)();
  (**myFuncPtr)();
  (***myFuncPtr)();
  // etc.
  (**********************************f)(); // also valid
  </code></pre>