我有一些资源需要在C ++程序中分配,我希望这些资源能够
我正在编写一个需要一些字体资源的程序。这包含一个类,该类具有指向某些unsigned char
数据的指针,这些数据表示字体的rgb颜色。该类还有一些其他成员,例如字体字符的尺寸。
我想我可以通过创建一个静态(它必须是静态的吗?)指针来解决问题2。我可以在字体类头文件中声明一个指针,任何需要该字体的代码都应该包含这个头,因此可以全局访问指针。
global_font_ptr = nullptr
,这会导致程序稍后崩溃。更糟糕的是将其设置为随机地址,导致未定义的行为。我不确定如何解决问题1.我需要从文件中加载我的字体,该文件应该与程序执行的位置相同。因为我正在编写一个库,所以在完成任何其他操作之前,我不想通过调用int main()
中的函数来加载字体。对于必须调用该函数来手动处理字体加载的最终用户来说,这将是不方便的。
我可以以某种方式创建一个类的静态实例并获取类构造函数来加载字体吗?
不确定我应该采取什么样的方法来解决这个问题。我希望我的解释清楚。
答案 0 :(得分:0)
显而易见的解决方案是不要使用全局字体指针,而是将其包装在具有长期运行寿命的类中。公开指向资源的指针,尤其是头文件中的指针,说明资源/内存管理不畅,并且可能导致出现问题,包括ODR违规或懒惰的初始化(取决于您的代码实际执行的操作)。
一般来说:
您希望能够轻松切换字体而不影响全局状态
您不想将资源管理的负担转嫁给用户; init,construct和destroy模式被RAII和类