参考那么,std::unique_ptr 的自定义删除器是如何工作的呢?
构造函数
std::unique_ptr<ErrorHandling> error_;
RecursiveDescentParser::RecursiveDescentParser(std::string inputStream, bool fileService,
boost::optional<std::string> filePathName, std::ofstream &writer){
if (fileService == true){
error_(new ErrorHandling(fileService, writer)); <---- compiler error
}
else{
error_(new ErrorHandling(fileService, std::ofstream())); <---- compiler error
}
}
编译器错误
Error 1 error C2247: 'std::default_delete<_Ty>::operator ()' not accessible because 'std::unique_ptr<_Ty>' uses 'private' to inherit from 'std::_Unique_ptr_base<_Ty,_Dx,_Empty_deleter>'
此处描述的错误原因。
我之所以决定'std::default_delete<_Ty>::operator ()
是private
因为子类(std::unique_ptr
在这种情况下)已指定private inheritance
我将编写自己的自定义删除器。问题是我对语法和符号太不舒服而无法成功。