C- gobignt:如何在编译时检查非命令的纯虚拟虚拟

  • 本文关键字:虚拟 命令 gobignt 编译 c gobject
  • 更新时间 :
  • 英文 :


在编译时,Gobject World中是否有任何方法可以检测非初始化的纯虚拟功能?

我想在不先检查的情况下调用纯虚拟方法。

/* pure_virtual_method must be non NULL */
base->pure_virtual_method();

但是,如果不初始化,它将只有segv。

我不相信有一种在编译时间完美检查的方法,因为(例如)您的代码可以链接到另一个库,这是从您的类中派生的一个子类虚拟方法,以及在子类中将虚拟方法设置为 NULL(明确或隐式通过不初始化)的实现。

传统的处理方式是在运行时: g_assert (base->pure_virtual_method != NULL); base->pure_virtual_method ();

一些静态分析工具可能能够在编译时检查此g_assert()约束,尽管给定gobject中的子分类的高度动态性质,但不太可能。

相关内容

最新更新