gpt4 book ai didi

c - GObject:如何在编译时检查未初始化的纯虚拟?

转载 作者:行者123 更新时间:2023-11-30 15:02:35 25 4
gpt4 key购买 nike

GObject 世界中有没有办法在编译时检测未初始化的纯虚函数?

我想调用一个纯虚拟方法而不先检查它。

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

但是如果没有初始化,它就只是SegV。

最佳答案

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

处理这个问题的传统方法是在运行时:
g_assert(base->pure_virtual_method!= NULL);
基->pure_virtual_method();

一些静态分析工具可能能够在编译时检查此 g_assert() 约束,尽管考虑到 GObject 子类化的高度动态特性,这不太可能。

关于c - GObject:如何在编译时检查未初始化的纯虚拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40994991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com