Huf*_*294 6 c++ conditional-operator
使用时std::weak_ptr,最佳实践是使用std::shared_ptr该lock()方法访问相应的内容,如下所示:
std::weak_ptr<std::string> w;
std::shared_ptr<std::string> s = std::make_shared<std::string>("test");
w = s;
if (auto p = w.lock())
std::cout << *p << "\n";
else
std::cout << "Empty";
Run Code Online (Sandbox Code Playgroud)
如果我想使用三元运算符来简写它,则似乎是这样的:
std::cout << (auto p = w.lock()) ? *p : "Empty";
Run Code Online (Sandbox Code Playgroud)
将是有效的代码,但这不能编译。
是否可以将这种方法与三元运算符一起使用?
auto p = w.lock()不是作业。这是一个变量的声明。您可以在语句的条件中声明变量if,但不能在条件表达式中声明变量。
你可以写:
auto p = w.lock();
std::cout << (
p ? *p
: "Empty"
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |