title: Type error switching from .m to .mm
body: <p>I encountered this error:</p>
  
  <pre><code>cannot convert 'V_DTLPROMO_BTN_FN_T' to 'V_DTLPROD_BTN_FN_T' in argument passing
  </code></pre>
  
  <p>in code line:</p>
  
  <pre><code>[ m_vPromoDetails   changeButton : V_DTLPROMO_BTN_2 btnFn : V_DTLPROMO_BTN_FN_ADD ]; 
  </code></pre>
  
  <p>Both arguments are of type <code>V_DTLPROMO_BTN_T</code> &amp; <code>V_DTLPROMO_BTN_FN_T</code> which is are enum declared in the <code>.h</code> file. Things were working fine until I changed the implementation file extension to <code>.mm</code> from <code>.m</code> to accommodate some C/C++ related code.</p>
  
  <p>Prototype declaration</p>
  
  <pre><code>- ( void )changeButton : ( V_DTLPROMO_BTN_T    )button 
               btnFn : ( V_DTLPROMO_BTN_FN_T )btnFn
  </code></pre>
  
  <p>Enum definitions</p>
  
  <pre><code>    typedef enum
  {
    V_DTLPROMO_BTN_FN_NONE        =   0,   /**&lt; None                       */
    V_DTLPROMO_BTN_FN_RECOMMEND   =   1,   /**&lt; Recommend                  */
    V_DTLPROMO_BTN_FN_ADD         =   2,   /**&lt; Add                        */
    V_DTLPROMO_BTN_FN_DELETE      =   3,   /**&lt; Delete                     */
    V_DTLPROMO_BTN_FN_LOCATE      =   4,   /**&lt; Locate                     */
    V_DTLPROMO_BTN_FN_BUY_NOW     =   5,   /**&lt; Buy Now                    */
    V_DTLPROMO_BTN_FN_SHOPPED     =   6,   /**&lt; Shopped                    */
    V_DTLPROMO_BTN_FN_TWEET       =   7,   /**&lt; Locate                     */
    V_DTLPROMO_BTN_FN_NUM         =   8    /**&lt; Number of function choices */
  
  } V_DTLPROMO_BTN_FN_T;
  
  
      typedef enum
  {
    V_DTLPROMO_BTN_1     =   0,   /**&lt; Button: 1         */
    V_DTLPROMO_BTN_2     =   1,   /**&lt; Button: 2         */
    V_DTLPROMO_BTN_3     =   2,   /**&lt; Button: 3         */
    V_DTLPROMO_BTN_NUM   =   3    /**&lt; Number of buttons */
  
  } V_DTLPROMO_BTN_T;
  </code></pre>