链表实现stack调用top方法出现int*转int错误如何解决?
错误触发原因
- 报错的核心是返回值类型不匹配:你
top()方法声明的返回值类型是模板参数Type,本次实例化时Type为int,但你实际返回的stackTop->list是int*指针类型,编译器不允许指针隐式转换为int类型,因此抛出转换错误。 - 出现这个问题说明你链表节点的
list成员是指向存储元素的指针,而非存储元素本身,直接返回指针就会出现类型冲突。
修复方案
你可以根据自己的节点定义选择对应修复方式:
- 方案一:如果节点的
list成员本身就是设计为指向元素的指针,只需要对返回值做解引用操作即可:
template <class Type> Type stackType<Type>::top() const { assert(stackTop != nullptr); // 栈为空时终止程序运行 return *stackTop->list; // 解引用指针,返回指向的实际栈顶元素 }
- 方案二:如果是节点定义失误,
list本来就应该直接存储元素值,那么修改链表节点的结构体定义,将成员Type* list调整为Type list即可,原有top()方法无需修改。
内容的提问来源于stack exchange,提问作者L0ST
相关产品推荐
相关产品推荐

