[問題] 利用factory pattern避免constructor失敗

看板C_and_CPP (C/C++)作者 (肯雞雞)時間5年前 (2020/04/07 20:21), 5年前編輯推噓0(007)
留言7則, 4人參與, 5年前最新討論串1/1
開發平台(Platform): Win10 win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) vc++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) No 問題(Question): 目前code裡面有一段constructor,裡面進行的操作有error發生的可能性,並不是 單純assign參數或者簡單計算。 例如這個constructor需要open a file,但是有失敗的可能性,既有的constructor都是 預設不會失敗,但是並不太保險,因此有人建議可以使用factory pattern來處理這個問 題,不過查了一些資料都看不到factory pattern哪部分的實作概念跟這個有關,因此想 來問問看大家是否有碰過類似的問題? ps. 使用linux的open or windows的_sopen_s 餵入的資料(Input): 一個檔案為constructor的input value 預期的正確結果(Expected Output): 類似constructor的操作,可以用factory pattern實現,且可以抓到error 錯誤結果(Wrong Output): 補充說明(Supplement): 做了兩天功課沒有發現比較類似的實作,希望有大神可以給點提示 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.223.183.178 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1586262100.A.28B.html ※ 編輯: ken771209 (61.223.183.178 臺灣), 04/07/2020 20:28:22

04/07 21:10, 5年前 , 1F
你是不是忘記除非加上 noexcept 不然我們應該假設每
04/07 21:10, 1F

04/07 21:10, 5年前 , 2F
個函式都會 throw? 而這就是一種報錯的方式
04/07 21:10, 2F

04/07 21:45, 5年前 , 3F
Two Phase Construction
04/07 21:45, 3F

04/08 01:16, 5年前 , 4F
如果只是要open file,何不移出constructor,只傳stream
04/08 01:16, 4F

04/08 01:17, 5年前 , 5F
就沒有open file會失敗的問題
04/08 01:17, 5F

04/08 09:29, 5年前 , 6F
謝謝各位大大,two phase construction的key word比較
04/08 09:29, 6F

04/08 09:29, 5年前 , 7F
接近我需要的東西,我會再去找些資料,感謝
04/08 09:29, 7F
文章代碼(AID): #1UZ71KAB (C_and_CPP)
文章代碼(AID): #1UZ71KAB (C_and_CPP)