提问人:David Hovsepyan 提问时间:11/12/2023 更新时间:11/12/2023 访问量:43
从头文件移动第三方库
Moving third party library from header file
问:
我有以下代码片段:
#include <nats/nats.h>
class MyClass
{
public:
// some functions here
private:
template<typename T, void (*DestroyFn)(T*)>
decltype(DestroyFn) makeDeleter()
{
return [](T* ptr)
{
DestroyFn(ptr);
};
}
std::unique_ptr<natsOptions, std::function<void(natsOptions*)>> m_options{
nullptr,
makeDeleter<natsOptions, natsOptions_Destroy>()};
std::unique_ptr<natsConnection, std::function<void(natsConnection*)>> m_connection{
nullptr,
makeDeleter<natsConnection, natsConnection_Destroy>()};
std::unique_ptr<natsSubscription, std::function<void(natsSubscription*)>> m_subscription{
nullptr,
makeDeleter<natsSubscription, natsSubscription_Destroy>()};
};
如果我不需要自定义删除器,我可以轻松地从 NATS 库转发声明使用的类型。但是,如果我有函数模板删除器从库中调用实际函数(例如,)是否可以做同样的事情?
问题是代码的审阅者要求不要在当前头文件中包含第 3 方库,但另一方面,在我的情况下我没有看到问题,因为当前头文件仅包含在两个文件中,因此如果 .makeDeleter
natsOptions_Destroy
.cpp
nats.h
答: 暂无答案
评论
std::unique_ptr
nullptr
::natsConnection != bridge::natsConnection