T Pop() { std::unique_lockstd::mutex lock(m_mutex); m_cv.wait(lock, [this] { return !m_queue.empty() || isNeedShutDown; }); if(!m_queue.empty()) { auto elem = std::move(m_queue.front()); m_queue.pop(); return elem; } else { return NULL; } } cmdProcessParam = Pop() 如何判断cmdProcessParam 是否取到值了,c++ 11中
时间: 2024-04-15 18:30:53 浏览: 168
在 C++11 中,你可以使用指针来表示可能为空的返回值,而不是直接返回 `NULL`。修改后的代码如下:
```cpp
T* Pop()
{
std::unique_lock<std::mutex> lock(m_mutex);
m_cv.wait(lock, [this] { return !m_queue.empty() || isNeedShutDown; });
if (!m_queue.empty()) {
T* elem = new T(std::move(m_queue.front()));
m_queue.pop();
return elem;
} else {
return nullptr;
}
}
```
在调用 `Pop()` 函数并获取返回值时,你可以使用指针的方式来判断是否成功取到值,如果指针不为 `nullptr`,则表示成功取到了值。
示例代码如下:
```cpp
T* cmdProcessParam = Pop();
if (cmdProcessParam != nullptr) {
// 成功取到值
// 继续处理 *cmdProcessParam
// 记得在不需要使用 cmdProcessParam 时释放内存
delete cmdProcessParam;
} else {
// 没有取到值
// 执行其他操作...
}
```
通过判断指针是否为 `nullptr`,可以确定是否成功取到了值。如果指针不为空,则可以使用 `*cmdProcessParam` 来访问具体的值;如果指针为空,则表示没有取到值,可以执行其他操作。记得在不需要使用 `cmdProcessParam` 时释放内存,以防止内存泄漏。
阅读全文