【问题标题】:error: invalid type argument of unary ‘*’ (have ‘int’)错误:一元“*”的类型参数无效(有“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 函数需要一个引用,你把它当作一个指针
  • 感谢您指出这一点

标签: c++ linux function pointers


【解决方案1】:

error 不是指针,不能对它使用间接(解引用)运算符operator*。

如果你只想设置它的值,改变

*error = errno;

到

error = errno;

【讨论】:

  • 我在某处看到过这样的例子.. void foo(int &value) { *value = 6; } int main() { int value = 5; cout
  • @mooli 绝对是的。
【解决方案2】:

在您的 foo 函数中,您使用一个引用,稍后您将它用作指针。 引用不是指针,因此您的编译器会抛出错误。将函数改为接受指针。

【讨论】:

  • 解决了您的问题吗?
  • 是的,它确实解决了问题。谢谢
猜你喜欢
  • 2018-01-20
  • 1970-01-01
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多