回 帖 发 新 帖 刷新版面

主题:return ::f();编译出错

请各位大虾解释下以下程序中return ::f();的意思:
class X
{
    friend class Y;
    friend void f(){}
};
class Z
{
    Y *py;
    void g()
    {
        return ::f();
    }
};
为啥编译出错?
谢谢了!

回复列表 (共5个回复)

沙发

::f();表示调用全局的f函数。

那么return ::f()表示调用f函数,并返回f函数的返回值。

g函数的返回值类型是void,你无论return了什么东西,都是错呀。

板凳

有些懂了。。
谢谢了。。

3 楼

class Z不是class X的友元类

4 楼

这代码是《C++ Primer》上的吧。

LZ可以看看这个帖子 http://topic.csdn.net/u/20100303/15/ab1ecd8c-bca4-478d-ad2a-73926fc92bd1.html

5 楼

[quote]::f();表示调用全局的f函数。

那么return ::f()表示调用f函数,并返回f函数的返回值。

g函数的返回值类型是void,你无论return了什么东西,都是错呀。[/quote]

return 可以return void

错误要么在你写的代码不全 
如果你保证代码全的 那就是权限问题 你的f不是全局函数 却用调用全局函数的方式去调用 


我来回复

您尚未登录,请登录后再回复。点此登录或注册