如何解决继承基于模板的赋值运算符
给定以下代码:
template <typename T,T DefaultValue>
class CObjectManager
{
private:
T m_Object;
public:
CObjectManager(const T object = DefaultValue)
{
m_Object = DefaultValue;
}
~CObjectManager()
{
DeleteObject();
}
T GetValue()
{
return m_Object;
}
void operator =(const T object)
{
DeleteObject();
m_Object = object;
}
protected:
void DeleteObject()
{
if (m_Object != DefaultValue)
{
FreeObject(m_Object);
m_Object = DefaultValue;
}
}
virtual void FreeObject(T object) = 0;
};
class CBCryptAlgorithmProviderManager : public CObjectManager<BCRYPT_ALG_HANDLE,NULL>
{
void FreeObject(BCRYPT_ALG_HANDLE object)
{
::BCryptCloseAlgorithmProvider(object,0);
}
};
我希望以下内容有效。
BCRYPT_ALG_HANDLE hAlgorithm;
status = BCryptOpenAlgorithmProvider(&hAlgorithm,BCRYPT_AES_ALGORITHM,NULL,0);
if (status != STATUS_SUCCESS)
throw new CEncryptionException(status,_T("Unable to open encryption provider."));
provider = hAlgorithm;
但最后一行报错:
没有运算符“=”匹配这些操作数:操作数类型为 CBCryptAlgorithmProviderManager = BCRYPT_ALG_HANDLE
这可能是我的愚蠢之处。但这不应该奏效吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。