使用顶部和空堆栈
Using top with empty stack
所以我有一个自定义堆栈类和一个顶级函数。我正在检查顶部是否为空,但在返回值时遇到一些问题而没有错误。
错误:"无法将 int 转换为 &int"
dataType &top()
{
try
{
if (stackData.checkEmpty()== false)
{
throw stackData.size();
}
}
catch(...)
{
cout << "Stack size is zero. Can not retrieve top " << endl;
return stackData.size(); //***Where the problem is***
}
return stackData.back();
}
int size( ) const
{
return Size;
}
问题出在您的大小方法上。您必须返回右值或文本。有关不同设置中的相同问题,请参阅此帖子。
评估是否真的需要返回引用,因为当堆栈为空时,引用顶部元素是没有意义的。最好遵循其他人的建议并在空堆栈上调用 top 时引发异常,返回堆栈的大小几乎无法区分空大小写(返回零)与零整数存储在堆栈中时。
作为旁注,为了简洁起见,最好写:
if (!stackData.checkEmpty())
比
if (stackData.checkEmpty()== false)
因为 checkEmpty() 已经返回了一个布尔值。这只是风格。
stackData.checkEmpty() 读起来就像如果为空,则返回 true,但你测试 false 并抛出这似乎是错误的方式。
你的函数top()有一个返回dataType的签名,但在这种情况下,你返回一个int......你不能这样做。
相关文章:
- 算法问题:查找从堆栈中弹出的所有序列
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 为什么调用堆栈数组会导致内存泄漏
- 如何在C++中更改堆栈的顶部?
- 嵌套容器:为什么我无法访问堆栈队列顶部的堆栈?C++
- 斯塔克,堆栈,也可以在底部和顶部添加整数
- 无法获取已填充堆栈<char>的顶部元素
- 如何返回堆栈 c++ 中顶部对象的引用
- 如何将项目弹出堆栈中顶部项目下方?
- C :我堆栈顶部发生了什么
- 将顶部堆栈元素传输到第二个堆栈的第一个
- 使用 windbg 查找不在堆栈顶部的函数的函数参数
- C++堆栈;删除顶部值并放入变量中
- 无法寻址的访问超出堆栈顶部
- Lua+Luabind,"runtime error"后堆栈顶部没有错误信息
- 使用顶部和空堆栈
- 从庸医(队列/堆栈)中包含的圆形数组顶部弹出一个项目
- 如果C++调用堆栈的顶部"???"所有零作为地址,这意味着什么?
- 在编码程序中使用自己的堆栈类-确定大小和顶部