如何使用一个类的成员函数作为另一个类的朋友函数?

时间:2019-11-02 11:56:42

标签: c++ oop

我定义了一个函数,该函数返回两个整数(属于A类)中的最大值。如何使它用于另一个B类?(作为它的朋友函数?)

class A
{ 
    int a;
    int b;
    public:
    void setvalue(){
        a=10;
        b=20;
    }
    int max(){
        if(a>b){
            return a;
        }
        else{
            return b;
        }
    }
};

class B
{

    int c;
    int d;
    public:
    void setvalue(){
        c=10;
        d=20;
    }
    friend int A::max();
};

int main() 
{

    A x;
    x.setvalue();
    cout<<"max is"<<x.max();
    B y;
    y.setvalue();
    cout<<"max is"<<y.max();
    return 0;
}
prog.cpp:38:20: error: 'class B' has no member named 'max'
    cout<<"max is"<<y.max();`

2 个答案:

答案 0 :(得分:1)

friend int A::max();

是朋友成员函数的正确声明。

问题在于类B没有最大成员函数。所以这个表情

y.max()

发出错误。

似乎您需要继承类B中的类A并将成员函数max声明为虚函数。

答案 1 :(得分:0)

让我们实践一下。您有A类和B类。 A的最大朋友是B的朋友。你做对了。但这并不意味着您拥有A的方法。 在现实生活中比喻。如果您是某人的朋友。这并不意味着您可以要求他的财产。确实,您可以要求您的朋友借钱给您,但您不能声称财产是您的。同样,您可以使用A的max(仅使用它),但不能说您是所有者。

class A
{
public:
int max(int x,int y)
{
            if(x>y)
                        return a;
            return b;
}
class B : public A//this is important
{
            int c ;
}
int main()
 { 
            B y; 
            cout<<"max is"<<y.max(2,3);
             return 0;
 }`