问题描述
给定以下代码:
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 (将#修改为@)