我已經開始利用的std::unique_ptr
例如爲:我的函數應該接受指針還是智能指針?
unique_ptr<TFile> myfile(TFile::Open("myfile.root"));
,而不是
TFile * myoldfile = TFile::Open("myoldfile.root") ;
現在我不知道我的職能應該是什麼樣子。我認爲問題的一部分可能是我的代碼不夠複雜,但任何問題都會變得明顯,但我希望立即得到它,所以當事情更加複雜時,我不會陷入混亂。
我曾經有:
double interestingResult(TFile * input)
{...}
(不實際修改TFile但不能是const,因爲它要求TFile的一些非const函數)。
我仍然可以做稱之爲:
myResult = interestingResult(myfile.get());
這似乎很人性化不是。 (我想在這裏建議:https://stackoverflow.com/a/5325560/1527126)
或者,我可以修改我的函數看起來像:
double interestingResult(unique_ptr<TFile>& input)
{...}
迫使用戶始終使用的unique_ptr。
我也可以寫支持:
double interestingResult(unique_ptr<TFile>& input)
{ return interestingResult(intput.get()); }
,但我不明白,在別人的代碼。
這種情況的標準方法是什麼?
我想這個答案(https://stackoverflow.com/a/9700189/1527126)意味着我應該接受引用,因爲我不希望myfile
爲空。但是函數庫函數TFile::Open
總是返回一個指針,所以看起來很自然,可以直接將該函數傳遞給函數,而不需要額外的解引用。
歉意p.s.我放棄了試圖弄清楚我是否應該問StackOverflow或CodeReview,或者根本沒有,但請指出我適當的地方,如果不是這樣。
使用參考? – Nim 2013-03-13 16:36:29