Mik*_*e C 6 c++ boost c++11 system-error
我其目的是使用名为类的系统上工作error_code,error_condition以及error_category-一个方案新标准:在C++ 11,本书虽然此刻我实际使用的加速实现.我已经阅读了Chris Kholkoff的一系列文章,现在已经三次了,我想我一般都懂得如何创建这些类.
我的问题是这个系统需要处理存在于各个DLL中的插件,插件可能会发出错误.我的原始设计是计划一个特定于系统的错误类别,该类别包含所有各种错误代码以及未真正映射到errno值的特定错误条件的列表.这里的问题是,为了使DLL能够使用这些错误代码之一,它需要访问error_category应用程序中的唯一实例.我现在通过SetErrorCategory()从每个DLL 导出一个函数来处理这个问题,这个函数有点工作但是有点icky.
我看到的替代解决方案是每个DLL都有自己的错误类别和代码,如果需要,还有自己的条件; 我怀疑这更像是为这个库功能所设想的.但是,我认为这需要主应用程序的错误方案中的比较函数,该错误方案知道插件的错误方案,并且可以检查应用程序的哪些条件与插件的错误相匹配.这似乎更容易出现一堆问题,尽管我还没有尝试过实现它.我猜我必须在所有实际逻辑之上从DLL导出整个错误方案.
当然,另一种方法是使用DLL中的数字错误代码并将它们填充到应用程序端的错误对象中.它具有插件简单的优点,但可能导致应用程序陷入困境(例如,从几个不同插件中处理对象的函数需要注意每个错误的来源).
所以我的具体问题是:你会使用哪三个选项,为什么?哪个显然不可行?当然,有没有一种更好的方式没有发生在我身上?
我想出了另一种解决方案:创建一个仅包含我的error_category实现的 DLL,并从应用程序和每个插件 DLL 链接到它。这使它们能够访问全局类别对象,而无需显式将该对象从应用程序传递到 DLL。