gpt4 book ai didi

C++ - 防止全局实例化?

转载 作者:可可西里 更新时间:2023-11-01 17:51:54 33 4
gpt4 key购买 nike

有没有办法强制类在堆栈上实例化或至少防止它在 C++ 中成为全局类?

我想阻止全局实例化,因为构造函数调用需要预先初始化的 C API。据我所知,没有办法控制全局对象的构造顺序。

编辑:该应用程序针对嵌入式设备,该设备也禁止动态内存分配。用户实例化类的唯一可能解决方案是在堆栈上或通过放置新运算符。

Edit2:我的类是库的一部分,该库依赖于其他外部库(C API 来自这些外部库)。我无法修改这些库,也无法控制库在最终应用程序中的初始化方式,这就是为什么我正在寻找一种方法来限制类的使用方式。

最佳答案

我宁愿通过将 C API 的调用包装到一个类中来使对 C API 的调用安全,而不是对您的类的对象施加一些任意的限制。该类的构造函数将进行初始化,而析构函数将释放获取的资源。

然后你可以要求这个类作为你的类的参数,初始化总是会成功的。

用于包装器的技术称为 RAII,您可以阅读更多相关信息 in this SO question还有这个wiki page .它最初是为了将资源初始化和释放封装到对象中,但也可以用于其他各种事情。

关于C++ - 防止全局实例化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13496027/

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