我已经开始利用的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