我得到了一个没有被忽略的无效值,因为它应该是错误的,为什么
I am getting a void value not ignored as it ought to be error why?
rotate函数为void,有1个int
参数。我不知道为什么我会犯这个错误。它只是一个有2条语句的void函数。
head_ptr_
是一个私有链表变量。
getNodeAt
返回位于给定位置"position
"的节点。由于它返回了一个节点,我们可以访问它的成员分配工作从右到左。它在赋值之前完成操作数右侧的所有操作。如果我错了,请随意修正我的知识。
template <class T>
void LinkedList<T>::rotate(int k)
{
head_ptr_ = getNodeAt(k)->setNext(head_ptr_);//error here
head_ptr_ = getNodeAt(k-1)->setNext(nullptr);
}//end of rotate
template<class T>
Node<T>* LinkedList<T>::getNodeAt(int position) const
{
// Count from the beginning of the chain
Node<T>* cur_ptr = head_ptr_;
for (int skip = 0; skip < position; skip++)
cur_ptr = cur_ptr->getNext();
return cur_ptr;
} // end getNodeAt
int main()
{
LinkedList<int> bag1;
for(int i = 14;i >= 10;i--)
{
bag1.insert(bag1.getLength(),i);
}
bag1.print();
cout << endl;
//bag1.invert();
bag1.rotate(3);
bag1.print();
system("PAUSE");
return 0;
}
错误:无效值未被忽略,因为它应该是
错误分析:
错误:无效值未被忽略。
这是一条GCC错误消息,表示函数的返回值为"void",但您正试图将其分配给非void变量。
您的特殊情况:
您的setNext((很可能返回void,并且您正试图将其返回结果存储到一个变量中,这就是为什么您在rotate函数中发布的这两行代码中提到了错误:
head_ptr_ = getNodeAt(k)->setNext(head_ptr_);//error here
head_ptr_ = getNodeAt(k-1)->setNext(nullptr);
您可以通过两种方式解决问题:
第一种解决方案:
将代码更改为这样,并应用必要的更改以保持相同的逻辑:
getNodeAt(k)->setNext(head_ptr_);
getNodeAt(k-1)->setNext(nullptr);
第二个解决方案:
更改setNext((函数以返回有效指针(不要忘记更改方法声明以返回节点指针(:
template<class T>
Node<T>* LinkedList<T>::setNext(Node<T>* next)
{
// same logic here as before
return ptr; // where ptr is a valid pointer that you want to return
}
相关文章:
- Openssl 1.1.1d无效使用不完整的类型"struct dsa_st"
- 无法访问嵌套类.类的使用无效
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 在没有参数列表的情况下使用模板名称"Event"无效,模板问题
- FFMPEG配置文件级别id大小无效
- 错误:从"int"到枚举c++的转换无效
- 如何修复此错误:className::className的无效使用
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- C++-模板嵌套类的引用初始化无效
- 错误:无效的预处理指令 #i 的意思是 #if?
- 多维数组 C++ 中数组下标的类型"int[int]"无效
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 我可以在这里替换什么,因为我不能在 C# 中使用隐式变量的 lambda 函数?
- 从 'int' 到 'int*' CPP 的转换无效
- 如何接受 [ENTER] 键作为无效输入并发送错误消息
- 在这个函数中是有缺陷的,因为取消引用 null 是无效的,所以我想更改代码
- 我得到了一个没有被忽略的无效值,因为它应该是错误的,为什么
- std::vector 的替代方案,因为重新分配会使指向元素的指针无效