c++ - c++函数返回两种不同的类型
问题描述
我正在使用 C++ 创建一个队列模板类。
队列类有多个函数成员。其中一个函数称为 front() 以检索队列的第一个值。基本上,front() 函数将首先检查队列是否为空(使用另一个 bool 函数 is_empty())。
如果为空,该函数将抛出错误消息并返回 1 表示有错误。如果队列不为空,则返回第一个值,其类型与队列中数据的类型相同。如您所见,有两种不同类型的返回值。定义函数时如何同时指定这两种类型?
示例代码如下。返回类型是 T。但函数也返回 1。这在 C++ 中可以接受吗?如果不是,如何修改?提前致谢!
template <class T>
T MyQueue<T>::front() {
if (! is_empty()) {
return my_queue[0];
}
else {
cout << "queue is empty!" << endl;
return 1;
}
}
解决方案
一种选择是使用std::optional
:
template <class T>
std::optional<T> MyQueue<T>::front() {
// You should remove the object from the queue here too:
if (!is_empty()) return my_queue[0];
return {};
}
然后你可以像这样使用它:
if(auto opt = queue_instance.front(); opt) {
auto value = std::move(opt).value();
std::cout << "got :" << value << '\n';
} else {
std::cout << "no value right now\n";
}
推荐阅读
- swift - 无法将文本设置为 SKLabelNode
- cmake - 如何获取使用 make clean 删除的所有文件的列表
- azure - Azure AD B2C 是否处理 Facebook Graph API 的重大更改?
- c# - 写一个没有日期的分隔线
- python - 如何在 sqlalchemy 更新查询中添加自定义列名?
- r - 使用带有 ifelse 语句的 Grepl 来标记列
- angular - Http.request 导致 TypeError: "values is null"
- javascript - 无法查看将数据发送到 PHP 文件的代码的问题根源
- excel - 带有 * 通配符的 Excel 公式语句
- sql - 如何将相同的条目添加到具有相同表的多个数据库中?