打印

C++:记录一个错误 undefined reference to `vtable for

[复制链接]
123|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
keer_zu|  楼主 | 2023-2-28 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 keer_zu 于 2023-2-28 10:26 编辑
class AppStateListener
        :public ldra_class_1000030000 /* 75 */
{
  public :
  virtual ~AppStateListener () = default ;
    /**
     * [url=home.php?mod=space&uid=247401]@brief[/url] request the app starts to serve, such as start threads, apply for some resource
     * @param none
     * @param none
     *
     * [url=home.php?mod=space&uid=266161]@return[/url] 0 indicates success
     */
  virtual uint8_t onStart () = 0 ;
    /**
     * @brief request the app stops to serve, such as stop threads, release resource
     * @param none
     * @param none
     *
     * @return 0 indicates success
     */
  virtual uint8_t onStop () = 0 ;
    /**
     * @brief notify of SM changed state
     * @param fg function group
     * @param state current changed state of the fg
     *
     * @return 0 indicates success
     */

  virtual uint8_t
                  onStateChanged ( FG_TYPE fg , FG_STATE state )
#if defined(LDRA_dummy_global) || defined(LDRA_dummy_1_1)
  {
   int ievent_handler_1zzqqzz                                                                              
= event_handler_1zzqqzz                                                                                (       1 ) ; /* 37 */
    event_handler_1zzqqzz                                                                                (       2  ) ; /* 48 */
    return
    0 ;
  } ;
#else
; /* end of prototype alternative */
#endif /* endof dummy_ */
}


出错:
undefined reference to `vtable for AppStateListener'


使用特权

评论回复
沙发
keer_zu|  楼主 | 2023-2-28 10:27 | 只看该作者
之前的原始形式:
class AppStateListener {
public:
    virtual ~AppStateListener() = default;

    /**
     * @brief request the app starts to serve, such as start threads, apply for some resource
     * @param none
     * @param none
     *
     * @return 0 indicates success
     */
    virtual uint8_t onStart() = 0;

    /**
     * @brief request the app stops to serve, such as stop threads, release resource
     * @param none
     * @param none
     *
     * @return 0 indicates success
     */
    virtual uint8_t onStop() = 0;

    /**
     * @brief notify of SM changed state
     * @param fg function group
     * @param state current changed state of the fg
     *
     * @return 0 indicates success
     */
    virtual uint8_t onStateChanged(FG_TYPE fg, FG_STATE state){return 0;};
};


不会报错

使用特权

评论回复
板凳
keer_zu|  楼主 | 2023-2-28 10:44 | 只看该作者
对比发现导致的原因是:

没有宏定义的时候,下面代码就是没有函数体的:
 virtual uint8_t

                  onStateChanged ( FG_TYPE fg , FG_STATE state )

#if defined(LDRA_dummy_global) || defined(LDRA_dummy_1_1)

  {

   int ievent_handler_1zzqqzz                                                                              

= event_handler_1zzqqzz                                                                                (       1 ) ; /* 37 */

    event_handler_1zzqqzz                                                                                (       2  ) ; /* 48 */

    return

    0 ;

  } ;

#else

; /* end of prototype alternative */

#endif /* endof dummy_ */

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1338

主题

12373

帖子

53

粉丝