作者ken771209 (肯雞雞)
看板C_and_CPP
標題[問題] 利用factory pattern避免constructor失敗
時間Tue Apr 7 20:21:36 2020
開發平台(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
→ loveme00835: 你是不是忘記除非加上 noexcept 不然我們應該假設每 04/07 21:10
→ loveme00835: 個函式都會 throw? 而這就是一種報錯的方式 04/07 21:10
→ ggBird: Two Phase Construction 04/07 21:45
→ Caesar08: 如果只是要open file,何不移出constructor,只傳stream 04/08 01:16
→ Caesar08: 就沒有open file會失敗的問題 04/08 01:17
→ ken771209: 謝謝各位大大,two phase construction的key word比較 04/08 09:29
→ ken771209: 接近我需要的東西,我會再去找些資料,感謝 04/08 09:29