【发布时间】:2021-05-21 09:40:04
【问题描述】:
我有一个简单的模板函数实现,用于从队列中返回前面的元素。
template<class T>
T Queue<T>::front(){ //Queue is a typical class implementation of queue
if(head) //head points to first element
return head->data; //head->data is of type T
//else return -1 //I want to do something like this
}
如果队列不为空,则返回第一个元素。我知道front() 可以在队列为空的情况下不返回任何内容而工作,但我想返回一些内容,以便我可以知道队列是否为空(以及摆脱编译器警告)。
问题- 当队列为空时,我可以返回什么?由于它的返回类型是 T,所以我不能为所有类型的 T 返回预定义的值(如 bool 或 int)。
【问题讨论】:
-
抛出异常?
-
这是 C++17 吗?你可以回
std::optional<T> -
你不能那样做。
-
你可以返回一个默认构造的
T,但这并不能真正解决问题,并且对T施加了不必要的限制