Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;课程期间(字体)资源的分配 我有一些资源要分配给C++程序,我想让这些资源到 在程序执行的整个生命周期内都是可访问的 全球可访问_C++_Fonts_Resources - Fatal编程技术网

C++;课程期间(字体)资源的分配 我有一些资源要分配给C++程序,我想让这些资源到 在程序执行的整个生命周期内都是可访问的 全球可访问

C++;课程期间(字体)资源的分配 我有一些资源要分配给C++程序,我想让这些资源到 在程序执行的整个生命周期内都是可访问的 全球可访问,c++,fonts,resources,C++,Fonts,Resources,我正在写一个需要一些字体资源的程序。它由一个类组成,该类有一个指针,指向表示字体rgb颜色的一些无符号字符数据。该类还有一些其他成员,例如字体字符的尺寸 我想我可以通过创建一个静态(是否必须是静态的?)指针来解决问题2。我可以在字体类头文件中声明一个指针,任何需要字体的代码都应该包含这个头文件,这样就可以全局访问指针 但是,我不知道如何防止在程序执行期间修改指针。这可能是个问题,因为任何使用代码都可以执行global\u font\u ptr=nullptr,这将导致程序稍后崩溃。更糟糕的是,

我正在写一个需要一些字体资源的程序。它由一个类组成,该类有一个指针,指向表示字体rgb颜色的一些
无符号字符
数据。该类还有一些其他成员,例如字体字符的尺寸

我想我可以通过创建一个静态(是否必须是静态的?)指针来解决问题2。我可以在字体类头文件中声明一个指针,任何需要字体的代码都应该包含这个头文件,这样就可以全局访问指针

  • 但是,我不知道如何防止在程序执行期间修改指针。这可能是个问题,因为任何使用代码都可以执行
    global\u font\u ptr=nullptr
    ,这将导致程序稍后崩溃。更糟糕的是,将其设置为随机地址会导致未定义的行为
我不知道如何解决问题1。我需要从一个文件中加载我的字体,该文件应该与正在执行的程序位于同一位置。因为我正在编写一个库,所以我不想在执行任何其他操作之前,通过调用
int main()
中的函数来加载字体。这对于必须调用该函数以手动处理字体加载的最终用户来说是不方便的

我可以创建一个类的静态实例并让类构造函数加载字体吗


不确定我应该采取什么方法来解决这个问题。我希望我的解释是清楚的。

显而易见的解决方案不是使用全局字体指针,而是将其封装在具有长期运行寿命的类中。公开指向资源的指针,特别是在头文件中,说明了资源/内存管理不善,并可能导致各种问题,包括ODR冲突或延迟初始化的黑客解决方法(取决于您的代码实际执行的操作)

一般而言:

  • 您希望能够在不影响全局状态的情况下轻松切换字体

  • 您不想将资源管理的负担转嫁给用户;init、construct和destroy模式被RAII和类取代


字体和资源在C++中不存在,它们是操作系统或特定于构建环境的东西。您使用的是什么构建系统(IDE)?你使用的是什么操作系统?请编辑你的问题以包含相应的标签。我有自己的自定义字体文件。你的两点似乎是我目标的总结。然而,这不是一个答案