错误:一元“*”的类型参数无效(有“int”)
Posted
技术标签:
【中文标题】错误:一元“*”的类型参数无效(有“int”)【英文标题】:error: invalid type argument of unary ‘*’ (have ‘int’) 【发布时间】:2015-11-04 11:53:32 【问题描述】:我正在尝试使用传递引用将错误传递给主函数,但是当我编译以下代码时出现错误
错误:一元“*”的类型参数无效(具有“int”)
主要代码:
main()
.
.
int error=-1;
foo(..., error);
.
.
功能代码:
foo(..., int &error)
if ( ...)
*error = errno;
errno 是 linux 系统调用的标准错误集。
头文件中定义了整型变量errno,由系统调用和一些库函数设置,在发生错误时指示出错的原因。
【问题讨论】:
引用不是指针。一元*
用于指针。 error
是一个参考。
你的 foo 函数需要一个引用,你把它当作一个指针
感谢您指出这一点
【参考方案1】:
error
不是指针,不能对它使用间接(解引用)运算符operator*
。
如果你只想设置它的值,改变
*error = errno;
到
error = errno;
【讨论】:
我在某处看到过这样的例子.. void foo(int &value) *value = 6; int main() int value = 5; cout @mooli 绝对是的。【参考方案2】:在您的 foo 函数中,您使用一个引用,稍后您将它用作指针。 引用不是指针,因此您的编译器会抛出错误。将函数改为接受指针。
【讨论】:
解决了您的问题吗? 是的,它确实解决了问题。谢谢以上是关于错误:一元“*”的类型参数无效(有“int”)的主要内容,如果未能解决你的问题,请参考以下文章
我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前