我正在编写一个 C++/CLI 类,该类需要在CComPtr
其生命周期内持续使用,例如
public ref class MyClass
{
public:
MyClass()
{
CComPtr<ISomeType> pSomeType;
// init someType;
m_pSomeType = pSomeType;
}
private:
CComPtr<ISomeType> m_pSomeType;
void DoSomething()
{
m_pSomeType->DoSomething();
}
}
但是,由于不支持混合类型,因此无法编译 - 解决方案是使用AutoPtr
. 我仍然需要引用计数,所以这就是我想出的。
public ref class MyClass
{
public:
MyClass()
{
CComPtr<ISomeType> pSomeType;
// init someType;
m_pSomeType = new CComPtr<ISomeType>(pSomeType);
}
private:
AutoPtr<CComPtr<ISomeType>> m_pSomeType;
void DoSomething()
{
CComPtr<ISomeType> pSomeType = *m_pSomeType.GetPointer();
pSomeType->DoSomething();
}
}
这对我来说看起来很讨厌,而且我也怀疑它在某种程度上是错误的(我来自 C# 背景,所以我在学习过程中学到了很多东西)。
CComPtr
我应该如何将 a作为 C++/CLR 类的成员“存储” ?