【发布时间】:2021-02-07 14:32:12
【问题描述】:
假设我有一门课
template <class T>
class c_array {
private:
T* m_arr;
int m_length = 0;
public:
T pop() {
if (m_length==0) {
//???
}
m_length--;
return m_arr[m_length];
}
};
如果长度==0,我应该返回什么?
返回 NULL 会给出警告:
“警告:从 NULL [-Wconversion-null] 转换为非指针类型‘int’”
尝试
std::vector<int> vect;
int b = vect.pop_back();
给出错误“错误:应忽略的无效值”
【问题讨论】:
-
通常用户希望检查容器是否为空。
-
您需要返回一个有效的
T。您会注意到std::vector::pop_back不会因为(大概)这个原因返回弹出的元素。如今,使用std::optional可能是惯用的。 -
这种情况可以抛出异常。
标签: c++