zur*_*uby 0 c++ c++11 c++14 c++17
我正在使用 C++ 创建一个队列模板类。
队列类有多个函数成员。其中一个函数称为 front() 来检索队列的第一个值。基本上,front()函数将首先检查队列是否为空(使用另一个布尔函数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;
}
}
Run Code Online (Sandbox Code Playgroud)
一种选择是使用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 {};
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
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";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |