键入从.m到.mm的错误切换

时间:2011-07-26 13:10:14

标签: iphone c++ objective-c

我遇到了这个错误:

cannot convert 'V_DTLPROMO_BTN_FN_T' to 'V_DTLPROD_BTN_FN_T' in argument passing
代码行中的

[ m_vPromoDetails   changeButton : V_DTLPROMO_BTN_2 btnFn : V_DTLPROMO_BTN_FN_ADD ]; 

两个参数都属于V_DTLPROMO_BTN_T&类型。 V_DTLPROMO_BTN_FN_T这是在.h文件中声明的枚举。事情进展顺利,直到我将实现文件扩展名从.mm更改为.m以适应一些与C / C ++相关的代码。

原型声明

- ( void )changeButton : ( V_DTLPROMO_BTN_T    )button 
             btnFn : ( V_DTLPROMO_BTN_FN_T )btnFn

枚举定义

    typedef enum
{
  V_DTLPROMO_BTN_FN_NONE        =   0,   /**< None                       */
  V_DTLPROMO_BTN_FN_RECOMMEND   =   1,   /**< Recommend                  */
  V_DTLPROMO_BTN_FN_ADD         =   2,   /**< Add                        */
  V_DTLPROMO_BTN_FN_DELETE      =   3,   /**< Delete                     */
  V_DTLPROMO_BTN_FN_LOCATE      =   4,   /**< Locate                     */
  V_DTLPROMO_BTN_FN_BUY_NOW     =   5,   /**< Buy Now                    */
  V_DTLPROMO_BTN_FN_SHOPPED     =   6,   /**< Shopped                    */
  V_DTLPROMO_BTN_FN_TWEET       =   7,   /**< Locate                     */
  V_DTLPROMO_BTN_FN_NUM         =   8    /**< Number of function choices */

} V_DTLPROMO_BTN_FN_T;


    typedef enum
{
  V_DTLPROMO_BTN_1     =   0,   /**< Button: 1         */
  V_DTLPROMO_BTN_2     =   1,   /**< Button: 2         */
  V_DTLPROMO_BTN_3     =   2,   /**< Button: 3         */
  V_DTLPROMO_BTN_NUM   =   3    /**< Number of buttons */

} V_DTLPROMO_BTN_T;

1 个答案:

答案 0 :(得分:0)

V_DTLPROD_BTN_FN_T是在另一个类中声明的枚举。我detailpromo类以某种方式被detailprod类中的枚举弄糊涂了。我注意到两个类中的函数名都相同,所以我尝试将函数名称从changeButton更改为changeButtonForPromo。这样就完成了诀窍并且错误被删除了。还没有得到技术解释。