错误:一元“*”的类型参数无效(有“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”)的主要内容,如果未能解决你的问题,请参考以下文章

我收到错误错误类型参数一元减号和预期';'在 ':' 标记之前

参数的无效“类型”(字符)

lsmeans 模型中的参数无效?

领域错误:无效值,期望int和接收:0

将指向 int 数组的指针传递给成员函数,错误:数组下标的无效类型“int [int]”

错误消息:“float”和“int”类型的无效操作数到二进制“operator%”