2015-11-04 125 views
1

我试图传递错误使用按引用传递的主要功能,但是当我编译下面的代码我得到一个错误的错误:的一元无效的类型参数“*”(有“诠释”)

错误:一元的无效类型参数 '*'(有 'INT')

主代码:

main() 
{ 
. 
. 
int error=-1; 
foo(..., error); 
. 
. 
} 

功能代码:

foo(..., int &error) 
{ 
    if (...) 
     *error = errno; 
} 

errno是系统调用在linux中设置的标准错误。

头文件定义了整数变量errno,它由系统调用和一些库函数在发生错误时设置,以指示出错的地方。

+3

引用不是指针。一元'*'是指针。 '错误'是一个参考。 –

+1

你的foo函数需要一个参考,你把它当作一个指针 – KostasRim

+0

谢谢你指出 – Namitha

回答

1

error没有指针,你不能用它间接(反引用)操作符operator*

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

*error = errno; 

error = errno; 
+0

谢谢你指出。 – Namitha

+0

我看到一个这样的例子.. void foo(int&value) { * value = 6; } int main() { int value = 5; cout <<“value =”<< value <<'\ n'; foo(value); cout <<“value =”<< value <<'\ n'; return 0; } 这也会有同样的问题吗? – Namitha

+0

@mooli绝对是的。 – songyuanyao

1

在你的foo函数中你使用了一个引用,稍后你将它用作指针。 引用不是指针,所以你的编译器会引发你一个错误。改变函数来接受一个指针。

+0

谢谢你指出 – Namitha

+0

它修复了你的问题吗? – KostasRim

+0

是的,它确实解决了这个问题。谢谢 – Namitha

相关问题