注册 登录
编程论坛 C++教室

友元函数为何不能访问类的成员?

ALwaysZETA 发布于 2013-09-22 21:04, 519 次点击
用GCC编译,提示volume是私有的,不能访问。我另外重写了一个却可以编译通过,在这里,我的友元函数访问类的私有变量出现了什么问题?
#include<iostream>
using namespace std;

class triangle
{
private:
    float length,width,height,volume;
public:
    triangle()
    {
        length = 1.2;
        width = 2.3;
        height = 5.9;
        volume = 0;
    }
    void calc_volume();
    friend void ::duplicata(triangle &);
};

void triangle::calc_volume()
{
    volume = length * width * height;
}

float duplicate(triangle &c)
{
    float dup_value;
    dup_value = 2 * c.volume;
    cout<<dup_value<<endl;
}

int main()
{
    triangle t1;
    t1.calc_volume();
    duplicate(t1);
    return 0;
}

[ 本帖最后由 ALwaysZETA 于 2013-9-22 21:32 编辑 ]
5 回复
#2
blueskiner2013-09-22 22:08
friend void ::duplicata(triangle &);// 改成 friend float ::duplicate(triangle &);
#3
未未来2013-09-22 22:34
没大问题,哈哈
#4
上苍之手2013-09-22 22:56
首先,duplicate(t1);
函数写错了
其次,我在VC6.0下编译了下,的确是你说的那个错误,
但是我把函数float duplicate(triangle &c)
这句重新写了下,就没有了。
class triangle
{
private:
......volume
public:
.......
friend void duplicata(triangle &);

}
....
void duplicata(triangle &c) //删除重新写了下
{
......
}
....

...
#5
ALwaysZETA2013-09-23 10:02
回复 4楼 上苍之手
谢谢,原来是我拼写错了。重新校正拼写后编译正常了~
#6
lzj125302013-09-23 10:35
注意就行了哟
1