如何在C++中绑定构造函数?
在一个类中,我有带有构造函数的模板类,如下所示:
namespace EMRProcess
{
template<typename T>
class CEMRImpl
{
CEMRImpl(EMRProcessSR::CWebHandler<T>* pHandler_,
CSocketRemover* pSocketRemover, const std::string& strID, const std::string& strNo);
};
}
Run Code Online (Sandbox Code Playgroud)
从另一个类中,我尝试绑定构造函数,如下所示:
m_pMyObj->processEvent(EVT_MED, strTestId,
std::bind(&EMRProcess::CEMRImpl<T>::CEMRImpl,
this,
this,
strID,
strNo));
Run Code Online (Sandbox Code Playgroud)
编译时出现错误:依赖类型名称“EMRProcess::CEMRImpl::CEMRImpl”之前缺少“typename”
有人可以帮我解决这个问题吗?
您尝试对std:::bind()构造函数执行的操作永远不会按原样工作,因为获取构造函数的地址是非法的。但是 lambda 可以在任何std::bind()可以使用的地方使用(事实上,lambda 几乎总是优于std::bind()),因此让 lambda 正常调用构造函数并返回新对象,例如:
m_pMyObj->processEvent(EVT_MED, strTestId,
[&, this](){ return EMRProcess::CEMRImpl<T>(this, this, strID, strNo); }
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |