参照では、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
、独自のカスタム削除を作成することを指定したためです。問題は、私が構文と表記法に慣れていないことです。