如何 return 带有条件表达式的对象指针?
How to return an object pointer with conditional expression?
根据https://www.youtube.com/watch?v=LFv7XwgsdLY&t=1620s 25:40
class Foo
应该通过两种方式返回:
- 如果
if(condition)
return foo1
else
return foo2;
- 带条件表达式
return condition ? food(foo1) : std::move(foo2);
如果 Foo
是一个 unique_ptr
并且我想检查 Foo
是否不是 nullptr 然后 return foo
并且它是否是一个 nullptr returnnullptr
。让我们暂时忘记有人可能想要删除该指针。
哪种方式合适?
Foo* getFoo()
{
//get because foo is a unique ptr
return foo ? foo.get() : nullptr;
}
Foo* getFoo()
{
return foo ? std::move(foo.get()) : nullptr;
}
您不需要任何类型的分支。你可以只使用
Foo* getFoo()
{
return foo.get();
}
这是有效的,因为 get
将 return nullptr
如果 foo
持有 nullptr
。
根据https://www.youtube.com/watch?v=LFv7XwgsdLY&t=1620s 25:40
class Foo
应该通过两种方式返回:
- 如果
if(condition)
return foo1
else
return foo2;
- 带条件表达式
return condition ? food(foo1) : std::move(foo2);
如果 Foo
是一个 unique_ptr
并且我想检查 Foo
是否不是 nullptr 然后 return foo
并且它是否是一个 nullptr returnnullptr
。让我们暂时忘记有人可能想要删除该指针。
哪种方式合适?
Foo* getFoo()
{
//get because foo is a unique ptr
return foo ? foo.get() : nullptr;
}
Foo* getFoo()
{
return foo ? std::move(foo.get()) : nullptr;
}
您不需要任何类型的分支。你可以只使用
Foo* getFoo()
{
return foo.get();
}
这是有效的,因为 get
将 return nullptr
如果 foo
持有 nullptr
。