将 std::make_unique 与 class 的成员变量一起使用时出现问题
Trouble using std::make_unique with member variable of class
之前没用过std::make_unique
,code inspection鼓励我用
如果我使用它,它不会显示错误:
auto x = make_unique<CChristianLifeMinistryHtmlView>();
但是当我用我的 class 成员变量 CChristianLifeMinistryHtmlView *m_pHtmlPreview
尝试它时,它不喜欢它:
m_pHtmlPreview = std::make_unique<CChristianLifeMinistryHtmlView>();
如何将 std::make_unique
与 class 的成员变量一起使用?
您的问题与 class 成员无关,而与它的类型有关!
std::make_unique()
returns std::unique_ptr
用于模板类型 T
(即 std::unique_ptr
类型 T
的实例)
template< class T, class... Args >
unique_ptr<T> make_unique( Args&&... args );
^^^^^^^^^^^^^^
会员
CChristianLifeMinistryHtmlView *m_pHtmlPreview;
是指向 CChristianLifeMinistryHtmlView
的指针,而不是 std::unique_ptr
。因此,类型不匹配。
How do I use make_unique
with a member variable of the class?
因此,您需要使用std::unique_ptr<CChristianLifeMinistryHtmlView>
作为m_pHtmlPreview
成员的类型:
std::unique_ptr<CChristianLifeMinistryHtmlView> m_pHtmlPreview;
...
m_pHtmlPreview = std::make_unique<CChristianLifeMinistryHtmlView>();
如果是长输入,类型别名是个不错的主意:
using UniqueCLMHView = std::unique_ptr<CChristianLifeMinistryHtmlView>;
UniqueCLMHView m_pHtmlPreview;
...
m_pHtmlPreview = std::make_unique<CChristianLifeMinistryHtmlView>();
之前没用过std::make_unique
,code inspection鼓励我用
如果我使用它,它不会显示错误:
auto x = make_unique<CChristianLifeMinistryHtmlView>();
但是当我用我的 class 成员变量 CChristianLifeMinistryHtmlView *m_pHtmlPreview
尝试它时,它不喜欢它:
m_pHtmlPreview = std::make_unique<CChristianLifeMinistryHtmlView>();
如何将 std::make_unique
与 class 的成员变量一起使用?
您的问题与 class 成员无关,而与它的类型有关!
std::make_unique()
returns std::unique_ptr
用于模板类型 T
(即 std::unique_ptr
类型 T
的实例)
template< class T, class... Args >
unique_ptr<T> make_unique( Args&&... args );
^^^^^^^^^^^^^^
会员
CChristianLifeMinistryHtmlView *m_pHtmlPreview;
是指向 CChristianLifeMinistryHtmlView
的指针,而不是 std::unique_ptr
。因此,类型不匹配。
How do I use
make_unique
with a member variable of the class?
因此,您需要使用std::unique_ptr<CChristianLifeMinistryHtmlView>
作为m_pHtmlPreview
成员的类型:
std::unique_ptr<CChristianLifeMinistryHtmlView> m_pHtmlPreview;
...
m_pHtmlPreview = std::make_unique<CChristianLifeMinistryHtmlView>();
如果是长输入,类型别名是个不错的主意:
using UniqueCLMHView = std::unique_ptr<CChristianLifeMinistryHtmlView>;
UniqueCLMHView m_pHtmlPreview;
...
m_pHtmlPreview = std::make_unique<CChristianLifeMinistryHtmlView>();